[英]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.