rsync的filter有两种写法,一种是使用–filter=”+ xxx”(可以连续使用多个),一种是写一个filter.txt然后使用
-include-from=filter.txt
注意多个filter的规则如果有冲突是有先后顺序的。
如果文件目录结构如下:
├── dir1
├── dir2
├ ├── 0000
├ │ └── a.jpg
├ └── 0001
├ ├── a.jpg
├ └── b.jpg
├── dir3
├ ├── 0000
├ │ └── a.jpg
├ └── 0001
├ ├── a.jpg
├ └── b.jpg
└── dir_d
├── 0000
│ └── a.jpg
└── 0001
├── a.jpg
└── b.jpg
如果我只想同步目录dir_d下的文件,filter.txt写法
+ */
+ dir_d/**
- *
如果我只想同步所有的0000下的文件,filter.txt写法
+ */
+ **/0000/**
- *
注意:虽然你设置了filter规则,但是不被同步的目录依然会在dst创建一个空的文件夹,如果不想让rsync创建这些文件夹可以添加:
--prune-empty-dirs