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

时间:2017-01-14 18:33:37

标签: rsync

我正在尝试使用过滤规则文件,该文件使用包含/排除行的通配符来驱动包含和排除的内容,以便运行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子文件夹不会被排除。

  • 我希望能够使用类似上一条目的内容来说明上面规则中包含的未明确排除任何内容(使用通配符)
  • 我希望能够包含某些路径(在上面的示例中包括webapp路径),并指出应该包含该点下面的所有文件和文件夹,但也能够在该上一个通配符中添加排除项(在上面的示例中)我想在任何webapp路径中排除repo子目录,所以基本上在某些路径中说“all except”
  • 上面只是一个片段,文件的较长版本将是来自root的服务器的完整备份策略

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

1 个答案:

答案 0 :(得分:1)

过滤规则构成有序集,并且评估将继续,直到第一次匹配发生。因此,如果您将排除规则向上移动,则所有repo文件夹都将被排除 - 至少到第3行。