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を使用している可能性があります。