2つのディレクトリのコンテンツストリーミングの比較[閉じる]

2つのディレクトリのコンテンツストリーミングの比較[閉じる]

次のタスクにストリーミングする方法(1つのコマンドまたはスクリプトで):

  • 両方のディレクトリdir1とdir2の内容(ファイルとフォルダ)を比較します。
  • dir1ディレクトリに新しいファイルが表示されたら、そのファイルをdir2にコピーし始め、同時にハンドラを使用して処理します。

diff - >コピー - > some.shの実行

答え1

次のコマンドを使用して、dir1 の内容を file1.txt にリストします。

ls -ltr | awk '{print $9}'  > /var/tmp/file1.txt

file1.txt には次の内容が含まれています。

t1
1
l.sh
r.txt
l.py
l.txt
p.txt

次のコマンドを使用して、dir2 の内容を file2.txt にリストします。

ls -ltr | awk '{print $9}' > /var/tmp/file2.txt
t1
1
l.sh
r.txt
l.py
l.txt

file1.txtと比較して、このコマンドはfile2.txtにないコンテンツを見つけてディレクトリ2にコピーします。

awk 'NR==FNR {a[$1];next}!($1 in a) {print $1}' file2.txt file1.txt |
awk '{print "cp -rvfp" " " "directory1path”$1 " " "directory2path"}' |
sh

答え2

これは2つの方法で行うことができます。

  1. ソフトリンクの使用

    ターゲットフォルダにソースの別のコピーを取得するには、このコマンドを使用します。

    ln -s  source destination
    

    ただし、この場合、ソースファイルやディレクトリを削除するとリンクが壊れてアクセスできなくなります。

  2. rsyncの使用

    rsync -avzh sourcepath destinationpath
    

    このコマンドはソースとターゲットを自動的に同期します。継続的に確認して更新できるように、このコマンドの1分crontabを予約してください。

関連情報