rsnapshot调用rsync -aF时.rsync-filter不生效全量同步Library如何解决
rsync过滤规则不生效问题排查与修复
问题根因
- rsync过滤规则采用从上到下优先匹配逻辑,你用到的
-F参数默认会读取远程被拉取端对应目录下的.rsync-filter文件,如果你的过滤规则文件存放在本地归档服务器,而非远程Mac的/Users/garethhowell/路径下,规则会完全不生效,导致全量同步Library目录。 - 你当前规则末尾的排除逻辑存在冗余,且没有显式匹配iCloud相关的默认路径,导致iCloud目录没有被过滤。
修复方案
1. 修正过滤规则文件内容
替换你现有的.rsync-filter末尾Library相关规则为如下内容,同时新增iCloud目录过滤规则:
- /tmp* - /temp - /lost+found # Office temporary files - ~$* # Common Mac junk - .TemporaryItems - .DS_Store/ - .Trash/ - ._* # Specific stuff - /Downloads/ - /VMWare/ - /VirtualBox\ VMs/ - /opt/ # 新增iCloud相关目录过滤 - /Library/Mobile\ Documents/ - /Library/CloudStorage/ - /Library/Containers/com.apple.iCloud* # Library目录按需同步规则 + /Library/ + /Library/Containers/ + /Library/Containers/com.apple.BKAgentService/ # 排除Containers下所有非显式包含的内容 - /Library/Containers/* # 排除Library下所有非显式包含的一级内容 - /Library/*
2. 修正rsync命令的过滤规则读取逻辑
如果你的.rsync-filter文件存放在本地归档服务器,需要把原命令中的-F参数替换为--filter='merge /本地存放过滤规则的绝对路径/.rsync-filter',修改后的命令参考:
/usr/bin/rsync -azv --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh --filter='merge /path/to/your/.rsync-filter' garethhowell@172.29.12.159:/Users/garethhowell /import/archive/rsnapshot1/alpha.0/mbpro.agdon.net
如果你的过滤规则文件存放在远程Mac的/Users/garethhowell/目录下,保留-F参数即可,需要确保文件权限对rsync的执行用户可读。
3. 规则生效验证
可以给rsync命令加上--dry-run参数试运行,查看输出的同步文件列表是否符合预期,确认不会同步不需要的iCloud目录和其他Library下的冗余内容后再执行正式备份。
内容的提问来源于stack exchange,提问作者Gareth
相关产品推荐
相关产品推荐

