複数のソースディレクトリから単一の宛先にコピーする方法は?

複数のソースディレクトリから単一の宛先にコピーする方法は?

findとrsyncを使用して特定のファイル形式を再帰的にコピーできますが、ターゲットに書き込むときにディレクトリ構造を無視できますか?つまり、ソースの下のすべてのサブディレクトリにあるすべてのzipファイルをコピーして、すべてを1つのターゲットディレクトリに配置します。ターゲットは、Sambaを介して共有される同じコンピュータにNTFSをインストールすることです。ソースファイルが変更または削除される可能性があるため、rsyncを使用したいと思います。

私は次の内容に従って何かを整理しようとしましたが、正しい道を進んでいるのか、これが最善のアプローチであるかはわかりません。

usr/bin/find /SRC -name "*.zip" -exec usr/bin/rsync -vgoth --delete {} /DEST/ \;

コマンドは最終的にCrontabを介して実行されるシェルスクリプトで実行されるため、フルパスを使用します。

ベストアンサー1

あなたの質問を誤解したかどうかはわかりませんが、あなたが提供した行はうまくいきます(少なくともrsync 3.1.2を使用する私の立場では)!

$ tree
.
├── file1.zip
├── folder1
│   └── file2.zip
└── folder2
    └── subfolder
        └── file3.zip

3 directories, 3 files

$ tree $BACKUP_DESTINATION
0 directories, 0 files

$ find . -iname "*.zip" -exec rsync -vgoth {} ${BACKUP_DESTINATION} \;
[...]

$ tree $BACKUP_DESTINATION
.
├── file1.zip
├── file2.zip
└── file3.zip

0 directories, 3 files

ご覧のとおり、3つのzipファイルは異なるフォルダにあるにもかかわらず、パスなしでコピーされます。

より良い解決策を見つけましたか? (たぶんJoeが提案したrsyncリストにあるかもしれません)

(注:BowlOfRedが彼のコメントで指摘したように、これは--delete私のテストで欠落しています(元の提案で使用しています)--recursive--dirs以前のバージョンのrsyncを使用している可能性があります。

おすすめ記事