嵌套的rsync --include和--exclude规则,应该用几个命令实现吗?

时间:2014-05-15 14:50:42

标签: bash unix rsync

在Web服务器环境之间,我们有类似于以下内容的数据资产文件夹结构:

/Volumes/data-acct/assets/
├── audio
│   ├── section1
│   │   └── nested files and folders
│   └── section2
├── css
│   ├── section1
│   │   └── nested files and folders
│   └── section2
├── images
│   ├── section1
│   │   └── nested files and folders
│   └── section2
└── videos
    ├── section1
    └── section2

我一直试图找到一个包含过滤器,允许我匹配每个区域的特定部分文件夹,虽然从--include="*/"更改时没有结果(包括所有文件夹和--include="*/section1/**/*.*"

rsync --dry-run --verbose --recursive --update --include="*/section1/**/*.*" --exclude="*" /Volumes/data-acct/assets/ /Volumes/data-live/assets/

我应该为此运行几个命令吗?或者我应该使用--filters参数(似乎没有记录)

1 个答案:

答案 0 :(得分:1)

我确信只使用rsync是一个很好的解决方案(因为它非常强大),但是如果有疑问我会喜欢这样的知名工具:

cd /Volumes/data-acct/assets &&
find . |            # get all files
  grep /section1/ | # that contain section1
  grep -v videos/ | # but without videos
  rsync --dry-run --verbose --recursive --update --files-from=- \
    /Volumes/data-acct/assets/ /Volumes/data-live/assets/

--files-from选项允许您创建自己的自定义列表,而不使用任何rsync过滤器。