再帰比較と削除(rsyncまたはハッシュは不要)

再帰比較と削除(rsyncまたはハッシュは不要)

私は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}";

おすすめ記事