
ストリーミングを (1 つのコマンドまたはスクリプトで) タスクにする方法:
- 2つのディレクトリ 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 つの方法で実行できます。
ソフトリンクの使用
このコマンドを使用して、ソースの別のコピーを宛先フォルダに取得します。
ln -s source destination
ただし、この場合、ソース ファイルまたはディレクトリが削除されるとリンクが壊れ、アクセスできなくなります。
rsyncの使用
rsync -avzh sourcepath destinationpath
このコマンドは、ソースと宛先を自動的に同期します。このコマンドが継続的にチェックおよび更新されるように、crontab を 1 分間スケジュールします。