rsyncを使用してソースで見つかったターゲットのファイルを削除する

rsyncを使用してソースで見つかったターゲットのファイルを削除する

rsync元のファイルを使用してターゲットのすべてのファイルを削除する方法があるかどうか疑問に思います。ソースには30個以上のディレクトリがあり、ターゲットには10​​0個以上のファイルがあります。

ターゲットから30+を再帰的に削除し、rsyncこれを行うのに役立つ可能性がある他のものがあるかどうか疑問に思います。

源泉

a/
b/
c/

目的地

a/
abc/
xyz/
b/
c/
...

ベストアンサー1

私はこれがそうなるとは思わないがrsync、ファイルリストを作成し、そのリストを修正し、スクリプトでターゲットにコピーすることができます。

ファイル名に改行や一重引用符(')が含まれていないとし、ソースマシンで次のコマンドを実行します。

cd basedir
find . -type f | sed 's/^/rm -f '\''/' | sed 's/$/'\''/' > /var/tmp/to_remove

次に、ファイルをターゲットto_removeシステムのcdデフォルトディレクトリにコピーしてインポートします。存在しませんが、リスト内のファイルは何の影響も与えず、ターゲットでのみ利用可能な他のファイルには触れません。

ディレクトリも削除したい場合は、追加のディレクトリを使用できますが、これにより、ディレクトリからファイルが削除されたかどうかに関係なく、ソースに存在し、ターゲットに空のディレクトリが削除されます。

find . -depth -type d | sed 's/^/rmdir -f '\''/' | sed 's/$/'\''/' > /var/tmp/to_remove

おすすめ記事