rsnapshot 介绍与选型指南
rsnapshot 是基于 rsync + 硬链接的 Perl 快照备份工具,本文基于官方公开资料梳理其定位、快照原理、功能特性与适用边界,并对 BorgBackup、Restic、Duplicati、BackupPC、UrBackup 做社区活跃度/版本节奏/兼容矩阵量化选型对比,数据实查日期 2026-10-22。
rsnapshot 介绍与选型指南
目标:面向需要在 Linux 服务器上搭建「定时文件级快照备份」的运维人员,梳理 rsnapshot 的软件定位、快照原理、功能特性、适用边界,并与 BorgBackup、Restic、Duplicati、BackupPC、UrBackup 等同类工具做量化选型对比。本文全部结论基于官方公开资料溯源(rsnapshot.org 官网、GitHub 官方仓库、Ubuntu 软件源),数据实查日期为 2026-10-22,本地部署与逐条命令实测见本系列安装、配置、命令三篇。
一、环境信息
- 信息源:rsnapshot 官网(rsnapshot.org)、GitHub 官方仓库(github.com/rsnapshot/rsnapshot)、Ubuntu 22.04(jammy)官方软件源;
- 数据实查日期:2026-10-22;
- 涉及版本:上游最新稳定版 1.5.1(2025-01-27 发布)、Ubuntu 22.04 仓库内 1.4.3-2(jammy/universe);
- 本系列其余三篇(安装指南、配置参数详解、CLI 命令详解)基于 Ubuntu 22.04.5 LTS x86_64 实机完成全部命令实测;
- 适用读者:Linux 运维、自托管(Self-hosted)爱好者、需要低成本快照方案的中小团队。
二、软件概述
2.1 软件定位
rsnapshot 是一个基于 rsync 的文件系统快照工具(filesystem snapshot utility),用于对本地机器与通过 ssh 可达的远程机器做周期性快照。官方描述其核心机制为"尽可能广泛地使用硬链接(hard links)来大幅降低磁盘占用":相邻两次快照之间未发生变化的文件在文件系统层面共享同一个 inode,因此新增一份"完整样子的快照"往往只增加少量真实磁盘空间。
它的产品哲学可以概括为三点(摘自官网首页):
- 无磁带:配置完成后,备份完全由 cron 驱动自动执行,"无需人工干预";
- 快照数量固定:每级快照保留个数由配置固定(如
retain daily 7保留 7 份),磁盘占用不会无限增长; - 普通用户可自恢复:快照就是普通目录树,文件属主可以直接进入快照目录找回自己的文件,"无需 root 介入"。
rsnapshot 起源于 Mike Rubel 2001 年发表的《Easy Automated Snapshot-Style Backups with Linux and Rsync》一文所描述的"rsync + 硬链接轮转"方案,2003 年前后由 Nathan Rosenquist 实现为 Perl 脚本并命名 rsnapshot;1.4.0(2016 年前后)起维护权移交社区(GitHub rsnapshot 组织),最新稳定版为 1.5.1。许可证为 GNU General Public License v2 及以上(GPL-2+,Ubuntu 包 copyright 文件标注 GPL-2+)。
2.2 技术栈与兼容性
官方 README 明确:
- 全部代码用 Perl 编写,无 CPAN 模块依赖(no module dependencies),已验证 Perl 5.12 至 5.40 可运行;
- 运行依赖只有三个外部程序:
rsync(数据复制)、ssh(远程传输通道)、cp/rm/du等系统工具; - 官方列出已在 Debian、Red Hat、RHEL、Fedora、CentOS、SuSE、Gentoo、FreeBSD、OpenBSD、Solaris、Mac OS X、IRIX 等 UNIX 兼容系统上成功运行;
- 不支持 Windows(无原生 Windows 版本)。
2.3 版本节奏(实查 GitHub Tags/Releases,查询日期 2026-10-22)
| 版本 | 发布日期 | 备注 |
|---|---|---|
| 1.4.2 | 2015-12-08 | 修复 open3 返回值位移 bug |
| 1.4.3 | 2019-11-17 | Ubuntu 22.04 仓库即收录该版本 |
| 1.4.4 | 2021-06-12 | 维护性更新 |
| 1.4.5 | 2022-12-27 | 1.4 线最后稳定版 |
| 1.5.0 | 2025-01-26 | 新特性版本 |
| 1.5.1 | 2025-01-27 | 当前最新稳定版(修复 make tar 打包问题) |
关键解读:上游以"多年一大版 + 偶发小修"的节奏维护,2025 年重启更新进入 1.5 线;各主流发行版仓库版本普遍滞后(Ubuntu 22.04 仍为 1.4.3-2),但 rsnapshot 1.4.x 功能成熟稳定,发行版包与上游新版的实际功能差异不大。版本选型建议见第七节。
三、核心架构
rsnapshot 是一个单机 Perl 脚本(典型部署在 /usr/bin/rsnapshot),没有守护进程、没有数据库、没有服务端口,整体架构由三个层面组成:
3.1 数据面:rsync + --link-dest 硬链接复用
- rsnapshot 按配置里的备份点(
backup条目)逐条调用 rsync,把数据源(本机目录或user@host:/path远程目录)复制进快照根目录(snapshot_root); - 从第二次快照起,rsnapshot 自动向 rsync 附加
--link-dest=<上一次快照>:凡与上次快照中完全相同的文件(大小、mtime、权限、属主等校验一致),rsync 不再复制,而是在新快照目录里创建一个指向旧文件 inode 的硬链接; - 因此每份快照目录树在"观感上"都是完整的,但底层磁盘上每个未变文件只存一份;只有发生变化的文件才会产生新的物理副本。
💡 技术拓展:文件级备份工具的"增量"实现路线不止 rsnapshot 这一种硬链接方案,业界常见四类对比——
实现路线 原理 代表工具 特点与取舍 硬链接快照 rsync --link-dest,未变文件共享 inode,每级快照是一棵完整目录树rsnapshot、Timeshift(rsync 模式) 快照可直接浏览、恢复即拷贝;不支持加密,未变文件占 inode,去重粒度为整个文件 块级去重仓库 数据切块(chunk)后按内容寻址存入专属仓库,快照是仓库里的元数据 BorgBackup、Restic 空间效率最高、天然支持加密压缩;仓库是私有格式,浏览/恢复必须借助工具 文件级拷贝池 服务端按文件内容池化存储,客户端增量上传 BackupPC 服务端集中去重,支持 Web 管理;架构较重 磁盘镜像 按块复制整个分区/磁盘 UrBackup(镜像模式)、Clonezilla 灾难恢复快;粒度粗、占用大、不便单文件浏览 rsnapshot 采用第一类「硬链接快照」路线——这正是它"快照可像普通目录一样用 ls/cp 直接操作"的根本原因,也决定了它不加密、文件级粒度的边界(见第六节)。
3.2 轮转面:retain 层级与"先删最远"
配置文件用 retain <名称> <数量> 定义快照层级(如 retain hourly 6、retain daily 7),执行 rsnapshot hourly 时脚本按固定顺序轮转:
rm -rf hourly.5(先删除最远的一份快照);mv hourly.4 hourly.5、mv hourly.3 hourly.4……依次整体后移(mv 只改目录名,inode 与硬链接关系全部保留);- 把
hourly.0的位置腾出后执行 rsync 生成新快照; - 高层级(如 daily)轮转时,把低层级(hourly)最老的一份
mv过来作为自己的最新快照——层级之间不重新复制数据。
3.3 调度面:cron 外部驱动
rsnapshot 自身不驻留内存,完全由 cron 按计划调用(官方 README 给出的示例:0 */4 * * * /usr/local/bin/rsnapshot alpha 每 4 小时一次)。运行期间用锁文件(lockfile)防止并发重叠;sync_first 开关可把"真正做 rsync 的动作"从各层级剥离到独立的 sync 子命令,让层级轮转只做目录搬移(对"备份窗口要固定、轮转要随时"的节奏更友好)。
3.4 远程备份模型
rsnapshot 采用拉取(pull)模型:备份服务器通过 ssh 主动到各被备份主机拉取数据,因此被备份端只需跑通 sshd 与 rsync,无需安装 rsnapshot、无需开放除 ssh(22)以外的任何端口;密钥免密(keyless)登录是远程备份的前提配置。
四、功能特性
以下特性均来自官方 README 与官网首页描述:
- 本地 + 远程快照:本机目录、NFS/Samba 挂载点、
user@host:/path远程目录均可作为备份点; - 硬链接省盘:仅变化的文件占新增磁盘空间;
- 固定保留数量:
retain每级固定份数,磁盘占用有上界; - 多层级轮转:hourly/daily/weekly/monthly(名称可自定义,如官方示例的 alpha/beta/gamma);
sync_first模式:真正备份与轮转解耦(rsnapshot sync先做同步,层级命令只轮转);- 备份点挂钩:
backup_script(运行脚本并把产物收进快照,典型用于数据库 dump)、backup_exec(在备份流程中执行任意命令)、cmd_preexec/cmd_postexec(整轮备份前后钩子); - 细粒度过滤:
include/exclude/include_file/exclude_file直接透传 rsync 规则; - LVM 快照配合:
linux_lvm_*参数可在备份前自动创建 LVM 逻辑卷快照、备份后删除,解决"备份期间文件变化"的一致性问题; - 辅助命令:
configtest(语法检查)、du(各快照实际磁盘占用)、diff(借助 rsnapshot-diff 比较两份快照差异)、-t试运行模式(打印将要执行的等价 shell 命令而不实际执行); - 低依赖易排障:单脚本 + 无模块依赖,
rsnapshot -t能完整展示每一步等价命令。
五、快速开始(最小可用示例)
以下为官方 README 给出的标准接入路径(本系列安装篇在 Ubuntu 22.04.5 LTS 实机逐条实测,这里给出最小闭环):
- 安装(Debian/Ubuntu 官方仓库已收录):
apt-get install rsnapshot
- 编辑
/etc/rsnapshot.conf,至少确定三要素——快照根目录、保留层级、备份点(配置文件以 TAB 分隔字段,这是新手第一坑):
snapshot_root /srv/rsnapshot/
retain daily 7
backup /home/ localhost/
- 语法检查与试运行(官方推荐动作):
rsnapshot configtest
rsnapshot -t daily
- 写入 cron 定时执行(官方 README 示例节奏):
0 */4 * * * /usr/local/bin/rsnapshot alpha
50 23 * * * /usr/local/bin/rsnapshot beta
- 手动验证:执行一次
rsnapshot daily,然后ls snapshot_root/daily.0/即可直接浏览快照内容。
完整的从零安装、依赖说明、卸载与排障实录见本系列安装指南篇;逐参数与逐子命令的实测详解见配置篇与命令篇。
六、适用场景与限制
6.1 适用场景
- Linux 文件服务器的定时快照:/etc、/home、/srv、网站目录、NFS/Samba 共享等文件级数据的低频高可靠保护;
- 自托管与中小企业:一台备份机 + cron 即可投产,无需常驻服务与数据库,故障排查只需读日志与目录;
- 需要"用户自助恢复"的组织:快照目录树对普通用户可见,找回误删文件不需要管理员介入;
- 作为异地备份的"落地层":先在本机做 rsnapshot 快照,再用其他工具把快照根同步到异地;
- 配合数据库 dump/快照:
backup_script先做mysqldump/pg_dump等导出,再纳入快照链。
6.2 限制与边界
- 无内置加密:快照目录是明文,落盘安全完全依赖文件系统与主机权限;需要加密备份时应选 BorgBackup/Restic 一类仓库型工具;
- 无内置压缩/去重:空间效率依赖硬链接 + 文件系统本身(如 btrfs/zfs 的透明压缩可叠加);同文件内容只发生局部修改时,整个文件会生成新副本;
- 文件级粒度:正在写入的数据库文件直接纳入快照可能不一致,需配合 LVM 快照或先 dump;
- 快照链不可跨文件系统:
snapshot_root必须是独立目录(官方推荐独立磁盘/分区),硬链接只在快照根内部生效; - 不支持 Windows:备份 Windows 机器需借助 cygwin/rsyncd 等兼容层,非官方支持路径;
- 版本滞后:发行版仓库版本(如 Ubuntu 22.04 的 1.4.3)落后上游 1.5 线,新特性需自行从上游安装。
七、同类选型对比
7.1 量化对比表
社区活跃度(GitHub Stars)、版本节奏(最新发布)、兼容矩阵三项量化数据实查日期均为 2026-10-22,来源为 shields.io GitHub 徽章与各仓库 Releases 页:
| 工具 | 语言/运行时 | Stars | 最新发布(实查) | 快照/去重机制 | 内置加密 | 典型部署模型 | Windows |
|---|---|---|---|---|---|---|---|
| rsnapshot | Perl(无模块依赖) | ≈3.7k | 1.5.1(2025-01-27) | 硬链接快照,文件级 | 无 | cron 拉取(pull),无常驻服务 | 不支持 |
| BorgBackup | Python | ≈14k | 2.0.0b25(2026-09-27,2.0 测试线) | 块级去重仓库 | 有(含压缩) | 单机或 ssh 推拉仓库 | 不支持 |
| Restic | Go | ≈37k | 0.19.1(2026-07-05) | 块级去重仓库 | 有(含压缩) | 单机 + 多种云存储后端 | 官方支持 |
| Duplicati | C#/.NET | ≈15k | v2.4.0.104 canary(2026-10-11,canary 通道) | 块级去重仓库 | 有(AES) | 图形界面 + 云备份 | 官方支持 |
| BackupPC | Perl | ≈1.6k | 4.4.1rc1(2025-11-13;上一稳定版 4.4.0 为 2020-06-24) | 服务端文件池化 | 无内置 | C/S + WebUI 集中管理 | 服务端 Linux,客户端跨平台 |
| UrBackup | C++ | — | 见站内专栏 | 文件 + 磁盘镜像混合 | 有(客户端侧) | C/S 客户端常驻 | 官方支持 |
关键差异解读:rsnapshot 是表中唯一「快照即目录树」的工具——空间效率与功能丰富度不如仓库型工具(Borg/Restic),但可读性、可恢复性、排障成本是六者中最低的;如果需要加密、云端异地、块级去重,直接选 Restic/Borg;如果需要桌面级图形化与云目标,选 Duplicati;如果需要多客户端集中管控(含 Windows),看 BackupPC 或 UrBackup。
7.2 选型建议(如果…则…)
- 如果只有几台 Linux 机器、要的是简单可靠的定时快照、希望误删文件由用户自己进目录拷回 → rsnapshot;
- 如果备份必须端到端加密或要推到 S3/B2 等对象存储 → Restic(或 Borg + 仓库落在稳定存储);
- 如果单机数据量大、修改频繁、极度在意空间效率 → BorgBackup(块级去重对"改一点、存一份"的场景收益最大);
- 如果是桌面/工作站用户要图形界面与计划任务 → Duplicati(或 Timeshift 处理系统快照);
- 如果要集中管理几十上百台异构客户端(含 Windows、含镜像级恢复) → UrBackup(本站已有专文:《UrBackup 2.5.38 介绍与选型指南》)或 BackupPC;
- 如果场景是单机系统盘快照回滚(而非数据备份) → Timeshift 的 rsync 模式本质与 rsnapshot 同路线,更贴合系统还原定位。
八、参考链接
- rsnapshot 官网:https://rsnapshot.org/
- GitHub 官方仓库(README/INSTALL/HOWTO):https://github.com/rsnapshot/rsnapshot
- 版本下载与校验和:https://rsnapshot.org/downloads/
- GitHub Releases 页:https://github.com/rsnapshot/rsnapshot/releases
- Mike Rubel 原始方案文章:Easy Automated Snapshot-Style Backups with Linux and Rsync(http://www.mikerubel.org/computers/rsync_snapshots/)
- Ubuntu 软件源包信息:http://packages.ubuntu.com/search?keywords=rsnapshot
- 本站相关专栏:《UrBackup 2.5.38 介绍与选型指南》
- 本系列实战篇:安装指南、配置参数详解、CLI 命令详解(见 rsnapshot 专栏)