ルートディレクトリとサブディレクトリでのみ特定のファイルを再同期します。

ルートディレクトリとサブディレクトリでのみ特定のファイルを再同期します。

私のディレクトリ構造は次のとおりです。

/books/a.epub
/books/sub/b.epub
/books/test/c.epub

みんな探したいルートディレクトリ(/books/)とサブディレクトリ(/books/)にある.epubファイル/)rsyncを使用して* .epubファイルのみをリモートディレクトリにコピーします。

これまで私は次のことを試しました。

rsync -av  --include='*.epub' --include='*/' --exclude='*' /media/share/Books/ /home/user/docker/calibre/books/

しかし、ディレクトリも同期しています。

出力は次のようになります。

/a.epub
/b.epub
/c.epub

ベストアンサー1

あなたがそれを持っていて無料ならfindxargsあなたはこれをすることができます:

find . -type f -iname "*.epub" -print0 | xargs -0 -I {} rsync -aPEmivv "{}" "/destination/directory"

使用したくない場合xargs

find . -type f -iname "*.epub" -exec rsync -aPEmivv "{}" "/destination/directory" \;

(両方の亜種が/books/ディレクトリで実行されます)

ただし、-a必要なオプション(再帰、シンボリックリンク、辞書権限、保存時間、所有者の保持、グループの維持、デバイスファイルの維持)を決定します。rsync-rlptgoD

ファイル名を別のプログラムにパイプするときは、ファイル名の特殊文字によって問題が発生しないように、NULL区切り文字列を使用することをお勧めします(NULL区切り入力の場合は-print0スイッチin find-0in xargs、およびinを使用)。rsync

おすすめ記事