rsync 的通配符驱动过滤器规则文件的正确语法是什么?

What is proper syntax for wildcard driven filter rules file for rsync?

我正在尝试使用一个过滤规则文件,该文件使用 include/exclude 行的通配符来驱动 运行 rsync 包含和排除的内容以备份服务器。

我正在使用如下命令行:

rsync -avzh --filter="merge rsync_backup_filter" / user@backupserver:/backup-data

其中 rsync_backup_filter 目前类似于

+ /var
+ /var/www
+ /var/www/webapp1/***
+ /var/www/webapp2/***
- /var/www/*/repo
+ /home/***
+ /etc/***
- *

但是上面的过滤规则语法不太正确,因为结果实际上与我的意图不符。 repo 子文件夹未被排除,因为我正在努力实现。

构建过滤规则文件的正确方法是什么,以及使用通配符实现我所描述的内容的正确方法是什么?

过滤规则构成一个有序集,评估会一直持续到出现第一个匹配项为止。因此,如果您将排除规则向上移动 - 至少到第 3 行,所有回购文件夹都将被排除。