Rsync
僅從根目錄和子目錄中同步特定文件
我在這樣的目錄結構中有文件:
/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
如果你有
find
並且xargs
有空,你可以這樣做: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
選項 inrsync
是否是您想要的,這意味著-rlptgoD
(遞歸、符號連結、pres.權限、保留時間、保留所有者、保留組、保留設備文件),是您的決定。請注意,當將文件名通過管道傳輸到另一個程序時,建議使用以空字元分隔的字元串(
-print0
switch infind
和-0
inxargs
以及rsync
用於以空字元分隔的輸入),這樣文件名中的特殊字元就不會成為問題。