关于Dirvish备份中指定包含特定路径的方法问询
Dirvish备份中如何指定仅包含特定路径?
嘿,关于Dirvish里指定仅包含特定路径的问题,我来给你捋捋可行的办法~
Dirvish本身默认是「全量包含,再排除指定内容」的逻辑,但要反过来实现「只保留特定文件/路径,排除其余所有」,我们可以利用它底层依赖的rsync的包含/排除规则来操作,这也是最常用的解决办法。
针对你提到的需求——要保留那几个服务器的dirvish.conf文件,同时还要包含/srv/backup/dirvish下的日期文件夹,具体可以这么配置:
方法一:用Dirvish自带的include/exclude指令
打开你的master.conf(或者对应备份库的单独配置文件),添加以下内容:
# 第一步:先排除所有内容,这是实现「仅包含」的基础 exclude = * # 第二步:逐个包含你需要的特定conf文件 include = /srv/backup/server1/dirvish/dirvish.conf include = /srv/backup/server2/dirvish/dirvish.conf include = /srv/backup/server3/dirvish/dirvish.conf include = /srv/backup/server4/dirvish/dirvish.conf include = /srv/backup/server5/dirvish/dirvish.conf # 第三步:包含/srv/backup/dirvish下的所有日期文件夹 # 注意要先包含父目录,否则rsync会因为父目录被排除而无法访问子内容 include = /srv/backup/dirvish/ include = /srv/backup/dirvish/**
方法二:直接传递rsync原生参数
如果你更习惯用rsync的原生规则,也可以通过rsync-options直接给rsync传参数,效果是一样的:
rsync-options = --include="/srv/backup/server1/dirvish/dirvish.conf" \ --include="/srv/backup/server2/dirvish/dirvish.conf" \ --include="/srv/backup/server3/dirvish/dirvish.conf" \ --include="/srv/backup/server4/dirvish/dirvish.conf" \ --include="/srv/backup/server5/dirvish/dirvish.conf" \ --include="/srv/backup/dirvish/" \ --include="/srv/backup/dirvish/**" \ --exclude="*"
额外小提示:如果是在已有排除规则里加例外
要是你原本已经有一些排除规则,只是想额外包含某个被排除的路径,可以在排除规则前加!来否定,比如:
# 假设你原本排除了/srv/backup/下的所有内容 exclude = /srv/backup/ # 现在要例外保留那几个conf文件 exclude = !/srv/backup/server1/dirvish/dirvish.conf exclude = !/srv/backup/server2/dirvish/dirvish.conf
配置完后,记得用dirvish --test命令测试一下规则是否符合预期,避免实际备份时踩坑哦~
备注:内容来源于stack exchange,提问作者JKE
相关产品推荐
相关产品推荐

