使用 rsync 跳过复制子目录的内容

使用 rsync 跳过复制子目录的内容
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

相关内容