用 Restic 做去重加密备份:一次配置,长期省心
传统的 rsync 同步是「当前状态」,误删会同步过去;Restic 是快照式,可以回到任意时间点。
它的去重按内容块做,同一份数据每天备份,实际增量可能只有几十兆。
先说结论
仓库放异地对象存储,密码单独保管,每月 check 一次、prune 一次。
- 仓库密码丢了数据就打不开,必须单独存
- 备份前排除缓存与临时文件
- prune 要按策略(--keep-daily 7 --keep-weekly 4)
- 定期 restic check --read-data-subset
先把问题说清楚
Restic 的仓库是「内容寻址」的:每个数据块按哈希存储,重复内容只存一份。这让每日备份的增量非常小。
代价是仓库结构不直观,只能通过 restic 命令访问,不能直接拷文件恢复。
具体怎么做
按顺序执行,每步都验证完再进下一步:
- restic init 初始化仓库(S3/B2/SFTP 均可)
- 把密码写进密码文件并单独备份
- 写备份脚本:指定目录、排除规则、打 tag
- 加定时任务,失败时告警
- 每月执行 check 与 prune,并做一次文件级恢复测试
参数与成本对照
把关键数值摊开,方便判断该选哪条路:
| 操作 | 作用 | 频率 |
|---|---|---|
| backup | 创建快照(增量) | 每日 |
| check | 校验完整性 | 每周 |
| prune | 回收空间 | 每月 |
| restore | 恢复文件/目录 | 每季演练 |

几个容易踩的坑
下面这些是最常见的错误做法:
- 密码只存在脑子里:忘了就全废
- 从不 prune:仓库无限膨胀
- 备份 /var/lib/docker:大量无用数据
- 只 check 不 read-data:静默损坏发现不了
最后补两句
备份工具再强,也强不过「定期恢复演练」这个习惯。
工具是手段,理解机制才是能力。命令记不住没关系,知道「该看什么」就够了。
评论 (3)
照着做了一遍,确实少走弯路。第二步最容易漏,建议顺手加个检查清单。
比「一键脚本」有用多了,知道为什么比知道怎么做重要。
补充一句:不同版本行为会变,动手前先确认自己的版本号。
发表评论