You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 16:09:52