シェルスクリプトを使用してrsyncが変更を行ったかどうかを確認する


10

rsyncの2つのディレクトリを使用するbashスクリプトがあります。時々変化があり、何もない可能性があります。

rsyncが実際に変更(ファイルの追加/更新)を行った場合にのみ、コマンドを実行したいと思います。それ以外の場合はスキップします。私が見ているべき返答はありますか?

回答:


11

-iオプションを使用する場合(および-vオプションを使用しない場合)、rsyncは、行われた変更の行のみをSTDOUTに出力します。スクリプトによっては、次のようになります

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi

それは私が望むことを正確に行うようです...ありがとう。そのような-iフラグの使用を考えていませんでした。
raccettura

明確にするために、変更が行われた場合にのみスクリプトを実行する場合は、にする==必要があります!=
hamx0r 2015

まあそれはそうですが、このコードは私が見たものから間違っています。そのコードについては、RsyncがFINEまたはHAS ERRORを実行していることがわかりますが、このコードは変更があったかどうかをチェックしません。他のバージョンのRsyncでそれが可能かどうかはわかりませんが、Raspbmc(私たちが持っている古い実装)とOSMCでRSYNCを使用しています。RSYNCは素晴らしいツールのようで、これは悲しいことです。

2
-iフラグを使用すると、変更が行われない場合にrsyncバージョンが3.1.1出力sending incremental file listされます。
Dor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.