
私はrsyncを使ってフォルダを同期していて、うまくいきます。問題は、最近、より大きなファイルを含むフォルダの同期を開始しましたが(ハッシュ比較のため)、必要なものよりも時間がかかります。 cpコマンドが-uオプションを呼び出すことで、rsyncs操作の一部をより迅速に実行できることがわかりました。つまり、この方法では、ソースの最新のファイルをターゲットに簡単に追加できます。
しかし、私が見つけなければならないのはrsync割り当ての2番目の部分ですが、これは役に立つと思いました。以下は、すべてのフォルダのファイルリストを再帰的に比較し、ソースには存在しませんが、ターゲットにはまだ存在するファイルを削除するコマンドです(ただし、すべてのファイルに対してハッシュを実行せずに ls コマンドを使用するだけで十分です)。必要)。
可能ですか?
答え1
これにより、フォルダ間の違いが削除されるように見えます。
diff -awr folderA folderB | sed 's/Only in //;s/: /\//' | while read f; do echo "removing ${f}"; done;
Aの違いを取り除き、Bの違いを取り除くには、次のようにgrepを追加できます。
diff -awr folderA folderB | sed 's/Only in //;s/: /\//' | grep "^folderA/" | while read f; do echo "removing ${f}"; done;
これを行うには、コマンドにフォルダAを2回入力する必要があります。
実際に実行するには、echo "removing ${f}";
次のように置き換えます。rm -f "${f}";
答え2
あなたは参照することができますこのリンクこのリンク。 rsyncには、.rsyncに存在しないフォルダを削除する機能がありますlive ENV
。
rsync -av --delete