rsync复杂过滤规则优先级不符合预期问题咨询
可以实现,你遇到的问题是rsync过滤规则的匹配顺序错误导致的
rsync的filter规则逻辑为从上到下逐行匹配,命中第一条符合的规则后就直接停止校验后续规则,你原来的规则把大范围的允许规则放在了最前面,导致后续的排除、例外规则根本不会被命中。
你只需要调整.deploy规则的顺序,把越精细的规则放在越靠前的位置即可,修正后的规则文件内容如下:
# 最精细的例外允许规则放在最前面,优先匹配 + 1/13/132/*** # 再写需要排除的子路径规则 - 1/13/*** # 再写大范围的允许规则 + 1/*** + 2/*** + 3 # 最后排除所有其他未明确允许的内容 - *
验证说明
- 调整后重新执行你带
--dry-run的测试命令,就会发现1/13/131目录已经被正常排除,其他需要同步的路径会正常保留 - 你用到的
--delete参数不会影响目标端未被你包含规则命中的未知文件/文件夹,rsync只会对匹配到同步规则的路径执行删除操作,完全符合你不能删除覆盖目标端其他内容的要求 - 单个filter规则文件完全可以满足你的需求,不需要切换为include-from、exclude-from参数
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

