Duplicity搭配--rsync-options时排除文件失效问题求助
问题原因及解决方法
核心问题
你错误地通过--rsync-options传递rsync的排除规则,忽略了duplicity自身的文件过滤机制——duplicity会先在本地生成要备份的文件列表,再调用rsync传输。此时rsync的排除规则仅在传输阶段生效,但duplicity已经把.cache目录的文件纳入了待传输列表,所以rsync的排除无法生效。
单独用rsync时规则生效,是因为rsync自己负责遍历目录并应用排除规则,和duplicity的工作流程完全不同。
正确解决方式
使用duplicity自带的排除参数,在本地文件遍历阶段就排除.cache目录:
方式1:直接用--exclude参数
duplicity -v9 --exclude '.cache' full /directory rsync://remotehost/some/dir/
这里的.cache是相对于备份源/directory的路径,正好对应/directory/.cache。
方式2:用排除文件列表--exclude-filelist
如果需要维护多个排除规则,继续使用你的排除文件,替换参数为--exclude-filelist:
duplicity -v9 --exclude-filelist /path/to/exclude-file.txt full /directory rsync://remotehost/some/dir/
你的排除文件内容保持一行.cache即可,因为该参数读取的是相对于备份源的路径。
额外注意
你原来的rsync URL里有多余的斜杠:rsync://remotehost://some/dir/,应该修正为rsync://remotehost/some/dir/,虽然这不是排除失败的直接原因,但可能导致远程路径识别异常。
内容的提问来源于stack exchange,提问作者user23512237
相关产品推荐
相关产品推荐

