rsync - ファイルが存在しない場合にのみディレクトリコンテンツをコピーする

rsync - ファイルが存在しない場合にのみディレクトリコンテンツをコピーする

古いサーバーのコンテンツを新しいサーバーに移行したいが、すべてをコピーしたくない.swfファイルはその中にあります。フラグについて知っていますが、--exclude親ディレクトリ(およびその内容)ではないファイルのみを除外します。.swf文書

rsyncを使用してこれを実行できない場合、この場合bashスクリプトを使用してあるサーバーから別のサーバーにファイルをコピーできますか?

答え1

* .swfファイルを含むディレクトリのリストを作成し、そのリストをrsyncの除外ファイルに変換できます。

例えば

find /path/to/topdir/ -iname '*.swf' -printf "%h\n" |
    sort -u |
    sed -e 's/^/- /; s:$:/**:' > rsync-exclude.txt

出力は次のようになり、--exclude-from=FILErsyncオプションと一緒に使用できます。

- /path/to/topdir/directory1/**
- /path/to/topdir/directory2/**
- /path/to/topdir/directory3/**
- /path/to/topdir/directory5/subdir1/**

rsync のインクルードと除外オプションは習得が難しく、glob や正規表現とは異なる動作をします。パターンが正確に収まるまで--dry-run練習する必要があります。--verbose

関連情報