Rsync

僅從根目錄和子目錄中同步特定文件

  • September 26, 2021

我在這樣的目錄結構中有文件:

/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.權限、保留時間、保留所有者、保留組、保留設備文件),是您的決定。

請注意,當將文件名通過管道傳輸到另一個程序時,建議使用以空字元分隔的字元串(-print0switch infind-0inxargs以及rsync用於以空字元分隔的輸入),這樣文件名中的特殊字元就不會成為問題。

引用自:https://unix.stackexchange.com/questions/670531