首页/数据/备份与容灾速查/restic 加密去重备份

restic 加密去重备份

开源备份工具:仓库端加密、内容寻址去重,支持本地与多种对象存储后端,快照式管理便于按时间点恢复。

备份与容灾速查数据更新于 2026-10-13

restic 是什么

restic 是 Go 编写的开源备份工具:仓库端全程加密,数据按内容寻址分块去重,每次备份都会生成一个快照,恢复时可按快照号或 latest 取回指定时间点的内容。仓库可以放在本地磁盘,也可以直接放到 S3、兼容对象存储、SFTP 或 REST 服务上,异地副本不需要额外同步工具。

基本信息

适用平台Linux / macOS / Windows / BSD,单文件二进制
仓库后端本地目录、SFTP、REST、S3 兼容对象存储、Azure/GCS 等
加密方式仓库口令派生密钥,数据与元数据加密后才上传,服务端看不到明文
口令来源RESTIC_PASSWORD 环境变量或 RESTIC_PASSWORD_FILE 文件,脚本中推荐用文件

典型使用场景

  • 单机文件备份到对象存储:加密去重后上传,无需自建服务端
  • 多主机共享一个仓库:每个主机一份快照,去重节省存储
  • 按时间点恢复:用 snapshots 找到目标快照,restore 到临时目录比对
  • 定期完整性校验:check --read-data 抽样读取数据块,发现静默损坏
  • 跨环境迁移:在旧机备份、新机 restore,口令一致即可搬数据

初始化与备份

初始化与备份
# 口令放在受保护的文件里,避免出现在进程列表与历史记录中
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic -r /backup/restic init                  # 初始化本地仓库
restic -r s3:s3.amazonaws.com/my-bucket init   # 或直接初始化到对象存储
restic -r /backup/restic backup /data /etc --exclude=/var/cache
# 查看已有快照与占用
restic -r /backup/restic snapshots
restic -r /backup/restic stats --mode raw-data

恢复与校验

恢复与校验
# 恢复到指定目录并只取所需子路径
restic -r /backup/restic restore latest --target /restore --include /data/conf
# 结构校验(块引用、索引与快照元数据)
restic -r /backup/restic check
# 抽样读取真实数据块:10% 既能发现损坏又不必读全量
restic -r /backup/restic check --read-data-subset=10%
# 清理不再被引用的数据块,释放存储
restic -r /backup/restic forget --keep-daily 7 --keep-weekly 4 --prune

常用子命令读法

子命令作用关键提示
snapshots列出所有快照与时间、路径、主机恢复前先确认目标时间点对应的快照 ID
restore把某快照内容还原到 --target 目录默认覆盖目标路径下同名文件,先备好空间
check校验仓库结构与索引一致性不加 --read-data 时不会读取真实数据块
check --read-data-subset随机读取指定比例数据块做校验按仓库大小与带宽选择比例,长期任务可分批
forget --prune按保留策略删除快照并回收空间prune 期间仓库锁定,避免与其他备份任务并发
去重按内容分块进行,多个主机备份同一份基础镜像或系统目录时节省效果明显;但仓库数据分块独立,不要用普通文件同步工具手动搬运仓库目录。
仓库口令没有任何找回通道:口令丢失等于所有备份永久不可读。口令要进密钥管理系统或纸质封存,并把恢复演练纳入例行检查。

易错点

  • 仓库口令丢失且无备份:所有快照永久不可读,是 restic 使用中最严重的单点失败
  • 只跑默认 check:不读数据块就发现不了介质静默损坏,关键仓库需定期加 --read-data 抽样
  • prune 与备份任务并发执行:仓库锁冲突导致备份中断,或产生额外的中间数据块
  • 把仓库目录当作普通目录同步:去重与索引依赖仓库内部结构,手工改动会造成仓库损坏

数据来源与参考

  • restic 官方文档(backup / restore / check)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌