📌 项目地址:restic/restic | ⭐ 34,090 颗星 | 🔧 Go | 📜 未标注
为什么你需要一个真正的备份工具?
很多人把文件复制到外置硬盘当作备份,但这种方式无法抵御勒索软件、硬件故障或误删除。传统的备份工具要么速度慢、要么不支持增量备份、要么加密不安全。restic 的设计目标正是解决这些痛点:端到端加密、增量备份、数据去重,并且支持从本地到各种云存储的数十种后端。
restic 使用 Go 编写,跨平台(Linux、macOS、Windows、FreeBSD、OpenBSD),单个二进制文件即可运行。它不需要复杂的服务器配置,通过一个密码即可创建加密仓库,密码丢失意味着数据不可恢复(这是它的安全策略,也是你需要牢记的代价)。
十分钟上手:从安装到第一次备份
安装
官方文档提供了各平台安装方式(安装指南)。以 Linux 为例,下载预编译的二进制文件并放到 PATH 即可。
初始化仓库
备份前需要创建一个仓库(repository),可以是本地目录、SFTP 或任意云存储。本地测试:
restic init --repo /tmp/backup
系统会提示输入密码,该密码用于加密所有数据。创建成功后输出类似:
created restic backend 085b3c76b9 at /tmp/backup
Please note that knowledge of your password is required to access the repository.
Losing your password means that your data is irrecoverably lost.
执行备份
备份目录或文件,同样需要指定仓库:
restic --repo /tmp/backup backup ~/work
输入密码后,restic 会扫描目录、计算哈希、压缩并去重上传。输出示例:
scan [/home/user/work]
scanned 764 directories, 1816 files in 0:00
[0:29] 100.00% 54.732 MiB/s 1.582 GiB / 1.582 GiB 2580 / 2580 items 0 errors ETA 0:00
duration: 0:29, 54.47MiB/s
snapshot 40dc1520 saved
每个备份会生成一个快照(snapshot),包含时间戳和唯一 ID。
恢复与浏览
- 恢复特定快照到目录:
restic restore 40dc1520 --target /tmp/restore - 更优雅的方式:通过 FUSE 挂载仓库,像文件系统一样浏览历史快照:
restic mount /mnt/backups
真正有价值的功能:丰富的后端支持
restic 不绑定任何特定存储服务。官方原生支持的 backend 包括(均来自文档):
- 本地目录
- SFTP (SSH)
- HTTP REST 服务器(需配合 rest-server)
- Amazon S3(亚马逊云或 MinIO 自建)
- OpenStack Swift
- BackBlaze B2
- Microsoft Azure Blob Storage
- Google Cloud Storage
- 以及通过 rclone 支持的几乎所有云存储服务(如 Dropbox、Google Drive、OneDrive 等)
这意味着你可以用一条命令将备份直接发往 AWS S3 或自家的 NAS,而且所有传输和存储数据都经过 AES-256 加密。同一个仓库可以混合使用不同后端,方便迁移。
与 Borg、Duplicati 等其他备份工具相比
restic 的主要竞争对手是 BorgBackup。区别在于:
- 跨平台:Borg 在 Windows 上需要 WSL 或 Cygwin,restic 原生支持 Windows。
- 加密模型:restic 使用“先加密再发送”的模式,服务端看不到任何明文;Borg 在服务端保留元数据,存在一定泄露风险。
- 后端丰富度:restic 原生支持数十种云存储,Borg 主要面向 SSH/SFTP 和本地,虽然可以通过 rclone 但它不是 Borg 原生的。
- 去重算法:两者都支持分块去重,但 restic 使用可配置的块大小,Borg 则固定为 64KB 块,对某些场景(如大量小文件)有差异。
如果你需要纯本地/SSH 备份、且追求极致性能和成熟度,Borg 是不错的选择。如果你需要跨平台、一键上云、或要求高安全性(即使是服务商也无法解密你的数据),restic 更合适。
注意事项
- 密码就是一切:仓库密码是唯一的访问凭证,丢失密码后任何数据都无法恢复。官方文档明确警告:“Losing your password means that your data is irrecoverably lost.”
- 性能:首次备份会较慢,因为需要完全扫描和分块计算。后续增量备份只扫描变化文件,速度很快。去重效果取决于数据内容(例如虚拟机镜像的重复块较少,而代码目录、文档集去重率高)。
- FUSE 挂载要求:
restic mount需要在机器上安装 FUSE(Linux)或 macFUSE(macOS,非系统自带)。 - 备份策略:restic 本身不提供定时调度,需要结合 cron 或 systemd timer 等作业调度工具。
- 许可证:BSD 2-Clause,可自由用于商业和私有项目。
- 成熟度:项目已有 34000+ Star,维护活跃,社区在 Discourse 论坛提供支持。
总结
restic 是一个“开箱即用”的命令行备份工具,没有复杂的架构依赖。它用 Go 解决了一个实际痛点:让你能用任意存储后端,安全、增量、去重地备份数据。如果你正在找一种自己能控制的、不依赖云厂商锁定、又足够安全的备份方案,restic 值得一试。