簡體   English   中英

如何通過保持目錄結構完整來rsync路徑中具有匹配模式的文件?

[英]How to rsync files with matching pattern in path by keeping directory structure intact?

我想將所有文件從服務器A復制到服務器B,這些文件在不同級別的文件系統層次結構中具有相同的父目錄名,例如:

/var/lib/data/sub1/sub2/commonname/filetobecopied.foo
/var/lib/data/sub1/sub3/commonname/filetobecopied.foo
/var/lib/data/sub2/sub4/commonname/anotherfiletobecopied.foo
/var/lib/data/sub3/sub4/differentname/fileNOTtobecopied.foo

我想前三個文件都具有復制commonname路徑服務器B.我已經找到了正確的包含/排除的模式花費了大量的時間rsync ,但我不明白這一點。 以下命令不起作用:

rsync -a --include='**/commonname/*.foo' --exclude='*' root@1.2.3.4:/var/lib/data /var/lib/data

我要么匹配太多,要么與少數文件匹配。 如何僅在路徑中同步具有commonname的文件?

我猜你在找這個:

rsync -a -m --include='**/commonname/*.foo' --include='*/' --exclude='*' root@1.2.3.4:/var/lib/data /var/lib/data

您的命令有2個不同之處:

  • 最重要的是--include='*/' 如果沒有這個,正如您指定的--exclude='*'rsync將永遠不會進入子目錄,因為所有內容都被排除在外。 使用--include='*/' ,子目錄不再被排除,因此rsync可以愉快地遞歸。
  • 最不重要的是-m :這會修剪空目錄。 如果沒有這個,你也會得到(空)子目錄/var/lib/data/sub3/sub4/differentname/ copied。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM