rsnapshot 用硬链接做快照:同一份备份保留几十个时间点还不占空间

备份如果只留最新一份,文件被误删三天后才发现就再也找不回来了。rsnapshot 的思路很巧:它用 rsync 把数据拉过来,再用硬链接做出一个个「时间点快照」。同一个文件没变,就在多个快照里共用同一份数据;只有变化的文件才单独存一份。于是你能保留「每小时、每天、每周」几十个历史版本,磁盘占用却接近一份全量加少量增量,是 Linux 服务器做周期备份的经典方案。
它解决什么问题
只留最新备份,文件被悄悄改坏几天后才察觉,旧版本早已被覆盖无法找回。
想保留多份历史副本,但每份都全量存,磁盘很快被撑爆。
备份脚本自己写轮转逻辑,容易出错,删错目录还可能把备份一起删了。
核心能力
| 能力 | 具体能做到什么 |
|---|---|
| 硬链接省空间 | 未变化的文件在多个快照间共享同一份数据,保留三十天历史也只占略多于一份全量的空间。 |
| 多级轮转 | 可配置 hourly、daily、weekly、monthly 多个层级,自动滚动、旧快照到期自动清理。 |
| 基于 rsync | 底层调用 rsync 做增量传输,远程备份走 ssh,复用成熟可靠的同步能力。 |
| 纯文本配置 | 配置文件就一个,定义源路径、目标与保留策略,改起来直观,不依赖数据库。 |
| 可挂脚本 | 支持在备份前后执行自定义命令,比如先锁库、备份完再解锁,保证一致性。 |
| 权限保全 | 以 root 运行时能完整保留文件属主、权限与符号链接,恢复后系统状态一致。 |

硬链接为什么能让多份备份不占多份空间
硬链接的本质是:多个目录项指向同一个 inode(同一份磁盘数据)。rsnapshot 第一次做全量备份,把文件真实存下来;之后的快照并不直接复制文件,而是为未变化的文件创建硬链接,指向已有的那份数据。只有发生变化的文件才会被 rsync 拉取新版本、单独存储。所以从使用者视角看,每一天都有一个完整目录树可浏览,但磁盘上重复的文件只存了一份,空间几乎不随快照数量线性增长。
使用时要留意的几件事:一是备份分区必须支持硬链接(同一文件系统内),跨分区或某些网络存储不支持;二是 rm -rf 单个快照目录会删除硬链接,但只影响该快照,其他快照里的共享文件不受影响,这点是安全的;三是保留层级要在配置里算好,snapshot_root 所在磁盘要留足余量。恢复时用 cp -a 或 rsync 把对应快照目录拷回即可,不需要特殊还原工具。
同类工具怎么选
| 工具 | 授权 | 差别在哪 |
|---|---|---|
| BorgBackup | 开源免费 | 支持去重与压缩加密,单仓库跨快照更省空间,适合异地加密备份。 |
| Backblaze | 商业试用 | 商业云备份服务,开箱即用,但免费档受限、历史保留要付费。 |
| Time Machine | 官方免费资源 | macOS 自带快照备份,图形化体验好,但仅限苹果生态。 |
谁适合用
- 需要给多台 Linux 服务器做周期历史备份的运维
- 希望保留多时间点版本、又不想买大容量存储的小团队
- 习惯用 cron 自动化、偏好纯文本配置的管理员
怎么开始
- 用包管理器安装 rsnapshot,编辑 /etc/rsnapshot.conf 设定 snapshot_root 与备份源。
- 在配置里定义 hourly、daily、weekly 各保留几份,以及对应的 cron 调用层级。
- 先用 rsnapshot configtest 检查配置语法,再用 -t 参数干跑看会执行什么。
- 确认无误后写进 cron,例如每天凌晨跑 daily、每小时跑 hourly。
- 恢复时进入对应快照目录,用 cp -a 或 rsync 把文件拷回原位置。
- 定期抽查几个快照里的文件能否正常打开,验证备份真的可用。
常见问题
它能备份 Windows 吗?
rsnapshot 本身跑在 Linux,但可以通过 ssh 把 Windows 上共享出来的目录当作源来备份,前提是能挂载访问。
硬链接会不会把快照互相搞乱?
不会。删除某个快照的硬链接只移除该目录的引用,其他快照共享的数据依然完好。
保留多久的历史合适?
常见做法是 hourly 留 6 份、daily 留 7 份、weekly 留 4 份,按需调大但要保证磁盘余量。
恢复需要专用工具吗?
不需要,每个快照都是普通目录,直接复制回去即可,这也是它相比私有格式备份的优势。
授权与合规
rsnapshot 以 GPL-2.0 开源协议发布,源码在 GitHub 公开,可自由部署到任意 Linux 主机。 官网:rsnapshot.org。
继续找同类资源
这条属于「系统相关」栏目,同栏目还有更多可直接使用的免费资源,可以在 系统相关全部资源 里按需翻阅。
相关资源
同栏目下这几条也常被一起翻到:
↓ 获取资源
点击按钮直接前往资源页面。