
本文教你如何为服务器挑选合适的备份工具,解决”备份做了却恢复不出来”这个所有运维都怕的问题。文章对 rsync 增量、BorgBackup、Restic 三种主流方案做横向对比,覆盖去重、压缩、加密、远端推送、恢复演练五个维度,并给出选型决策表与生产落地清单,帮助你在小时级 RTO 内完成数据回滚。
一、备份策略的三个基本问题
落地一套备份方案之前,先想清楚三个问题:备份频率、保留周期、恢复目标。频率决定了你能容忍多少数据丢失,也就是 RPO;保留周期决定历史可回溯多远;恢复目标 RTO 决定你能在多长时间内把业务拉起来。这三个数字往往比工具本身更重要,没有清晰的目标,再花哨的备份系统也救不了线上事故。
经典的 3-2-1 法则仍然适用:3 份数据、2 种介质、1 份异地。落到服务器上就是本地快照加远端对象存储加一份冷存储。下面要介绍的三种工具,本质都是在这套法则里的不同侧重点。rsync 强在简单直接,Borg 强在去重压缩,Restic 强在远端云存储原生支持。
二、rsync 增量方案
rsync 是 Unix 世界最老牌的同步工具,配合 hard-link 实现增量备份非常优雅。常见做法是 rsync 加 link-dest 参数,把每天的全量目录指向前一天的硬链接,未变更文件不占额外空间,变更文件才真正写入。这种方式恢复极其简单,cp 直接复制目录就完事。
rsync 的局限也很明显:没有内置去重(仅文件级硬链接),没有内置加密(要靠 ssh 传输或额外的 gpg),没有元数据库(看快照大小要 du)。适合的场景是单机本地或者推到 NAS 这种受信任目的地的小规模备份。如果数据库类二进制文件占比高,rsync 的硬链接做不到块级去重,空间会膨胀很快。要把备份推到云盘可参考 Cloudflare CDN 中国加速 的链路优化思路。
三、BorgBackup 的去重压缩
Borg 走的是另一条路:内容寻址加块级去重。它把所有文件切成可变长度的块,每个块用哈希做 key,相同内容只存一份。结果就是即使你每天备份完整目录,仓库占用增长也只跟实际变更量挂钩。生产场景下一个 200GB 的服务器,每天全量备份,一个月仓库可能只占 220GB,去重比惊人。
Borg 内置 AES 加密、ZSTD 压缩、完整性校验,单仓库可以追加无数次快照。命令行也对运维友好:borg create 做快照、borg list 看历史、borg extract 恢复单个文件。
- 单仓库务必只让一台机器写入,多机并发写会损坏仓库
- 备份完跑一次 borg check 验证一致性,磁盘故障早发现
- 配置 keep-daily、keep-weekly、keep-monthly 的滚动保留策略
- 密码与 keyfile 必须异地保存,否则仓库丢密钥等于永久丢数据
- 大库 prune 操作慢,建议加 save-space 与单独时间窗执行
四、Restic 与对象存储
Restic 出生于云时代,原生支持 S3、Backblaze、Azure Blob、GCS、SFTP 等多种后端,配置简单。它同样做块级去重与加密,仓库格式跨平台。最大优点是能直接把仓库放在对象存储上,不需要中间跳板机,云原生味儿十足。
Restic 的并发设计比 Borg 更现代,多客户端可同时写同一个仓库(基于 lock 文件协调),适合多机集中备份。snapshot 用 tag 与 host 字段做检索,restic snapshots –tag prod 一行命令拉出全部生产快照。恢复时 restic mount 把任意快照挂成 FUSE 目录,直接 cp 出需要的文件。VPS 节点选型可参考 美国 VPS 部署教程。
五、三者横向对比
落到选型层面给出几条判断:纯本地或局域网内、文件数量不大、希望恢复极其简单,选 rsync 加 link-dest。需要长期保留、空间敏感、单机集中备份,选 Borg。需要把备份直接推到 S3 或多机并发写一个仓库,选 Restic。
性能上 Borg 与 Restic 在去重压缩比上接近,Borg 略胜,Restic 在高延迟链路上表现更好。CPU 占用三者排序大致是 Borg 略低、Restic 中等、rsync 最低(无去重无加密)。带宽方面增量传输 Borg 与 Restic 都只传变更块,rsync 也增量但是文件级粒度更粗。
六、恢复演练与监控
很多备份事故的根因是没做恢复演练。真到事故那天才发现仓库损坏、密码遗忘、版本不兼容,悔之晚矣。建议每月至少一次完整恢复演练:找一台干净机器,从远端仓库恢复最近一次快照,校验数据库可启动、应用可运行、文件 checksum 一致。
监控层面用 Prometheus 加 node_exporter 的 textfile collector 上报备份状态:上次成功时间、仓库大小、运行时长、错误码。配合 Alertmanager 设规则——超过 26 小时没有成功备份立刻告警。SSH 与服务器基础加固相关请看 SSH Fail2ban 加固实战,把备份服务器本身的暴露面收窄。
七、跨区域灾难恢复
单机备份只是起点,真正的灾难恢复要考虑机房级故障。建议至少把一份冷副本放在另一个区域的对象存储里,Restic 加 S3 跨区复制是最便宜的方案;Borg 可以用 borg sync 或者 rclone 把仓库 mirror 到第二台机器。Nginx 流量切换可参考 Nginx 反向代理与负载均衡 把恢复后的流量平滑切回。
总结与建议
总结来说,没有最好的备份工具,只有最适合业务的备份策略。如果你刚起步,建议先用 rsync 加 link-dest 把本地快照做起来;规模上来后用 Borg 做单机长期归档;多机集中或上云就上 Restic。三者并不互斥,生产环境完全可以组合使用:rsync 做小时级本地副本,Borg 做天级长期归档,Restic 做异地云端冷存。如果你需要稳定的服务器节点托管备份仓库,可以考虑选用合适的云服务器方案。最后再强调一遍:备份不算数,恢复才算数,每月恢复演练比备份本身更重要。