rsync -avzm -e ssh /path/to/src/folder/ /path/to/dest/folder
--include=*/ --include=*/config.xml --exclude=*
我需要使用 rsync 复制二级目录中的文件(例如 config.xml)。我目前正在使用上面的脚本及其从所有目录级别复制 config.xml。
我应该对上述命令进行哪些更改?
答案1
尝试这个:
rsync -avzm -e ssh -f'- /*/*/' -f'+ config.xml' \
/path/to/src/folder/ /path/to/dest/folder
解释
-f
导致rsync
启用过滤规则。- /*/*/
:-
意思是排除规则。/*/*/
从级别中排除任何子目录3rd
。
+ config.xml
:+
意思是包含规则,导致rsync复制config.xml
文件名中包含的所有文件。
例子
$ ls -R dir1/
dir1/:
dir2 dir22
dir1/dir2:
config.xml.2 dir3
dir1/dir2/dir3:
config.xml
dir1/dir22:
config.xml.22 dir33
dir1/dir22/dir33:
config.xml
$ rsync -r -f'- /*/*/' -f'+ config.xml' dir1/ /tmp
$ ls -R /tmp/dir2*
/tmp/dir2:
config.xml.2
/tmp/dir22:
config.xml.22