如何配置rsnapshot利用已有初始大数据集实现增量备份?
解决方案
问题根源
你遇到的全量复制问题,核心是rsnapshot默认启用的--relative参数导致路径结构不匹配:该参数会保留远程源的完整绝对路径(/mnt/datastore/targetdir/),将文件同步到本地targetdir/mnt/datastore/targetdir/,和你手动放置的daily.0/targetdir/结构完全不同,rsync因此判定所有文件都是新文件,触发全量复制。
步骤1:修正rsnapshot.conf配置
编辑你的rsnapshot.conf文件,调整rsync_long_args参数,移除--relative:
# 原配置(含--relative) # rsync_long_args --delete --numeric-ids --relative --delete-excluded # 修改后配置 rsync_long_args --delete --numeric-ids --delete-excluded
同时确认snapshot_root配置指向正确的快照根目录(比如你的/home/rsnapshot/):
snapshot_root /home/rsnapshot/
步骤2:确保初始数据路径与元数据一致
- 先停止rsnapshot避免冲突:
rsnapshot stop
- 创建
daily.0/targetdir目录(如果不存在):
mkdir -p /home/rsnapshot/daily.0/targetdir
- 用rsync重新同步远程数据到该目录(确保元数据完全匹配,避免rsync误判):
rsync -aH root@server:/mnt/datastore/targetdir/ /home/rsnapshot/daily.0/targetdir/
这一步只会校验已有文件的元数据,不会重新复制400GB数据,速度很快。
步骤3:测试并运行增量备份
- 先执行dry-run验证命令逻辑(不会实际修改文件):
rsnapshot -t daily
查看输出的rsync命令,确认没有--relative参数,且目标路径为/home/rsnapshot/daily.0/targetdir/。
- 正式运行每日增量备份:
rsnapshot daily
此时rsnapshot会自动将daily.0重命名为daily.1,然后通过--link-dest=../daily.1参数,仅同步远程服务器上的变更文件,不会全量复制。
额外注意事项
- 确保rsnapshot运行用户(建议用root)对
snapshot_root目录有读写权限; - 若需保留每周/每月快照,确认
rsnapshot.conf中的interval配置正确,例如:
interval daily 7 interval weekly 4 interval monthly 6
内容的提问来源于stack exchange,提问作者Todd Hammer
相关产品推荐
相关产品推荐

