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

BorgBackup 去重加密备份

带去重、压缩与加密的备份工具:仓库内自动去重并在客户端加密,适合多版本、多主机共享存储的长期备份。

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

BorgBackup 是什么

Borg 是带去重、压缩与加密的备份工具:数据在客户端分块去重并加密后才写入仓库,因此同一份数据存多个时间点只增加变化部分的体积。仓库可以放在本地磁盘、外置盘或通过 SSH 访问的远端主机,适合多版本、多主机共享存储的长期备份。

基本信息

适用平台Linux / macOS / Windows(WSL),命令行工具
仓库形态本地路径或 SSH 远端(user@host:/path),不支持直接写对象存储
加密模式repokey 把密钥存进仓库(口令保护);keyfile 把密钥留在客户机
仓库口令忘记口令无法恢复,必须单独备份口令与密钥文件

典型使用场景

  • 多版本日常备份:每日一个归档,共享数据块,存储增长平缓
  • 多主机集中备份:各主机备份到同一仓库,去重效果更明显
  • 发布前留底:归档命名带日期,出了问题可按归档整体回退
  • 长期保留分层:日、周、月归档各自保留,prune 按策略收缩
  • 异地副本同步:把仓库放在远端服务器或外置盘定期轮换

初始化、备份与保留

初始化、备份与保留
# 初始化仓库并选择加密模式(repokey-blake2:密钥存仓库、口令保护)
borg init --encryption=repokey-blake2 /backup/borgrepo
# 创建归档:--stats 输出体积与去重统计
borg create --stats /backup/borgrepo::web-$(date +%F) /var/www /etc/nginx
# 查看已有归档
borg list /backup/borgrepo
# 保留策略:最近 7 天、4 周、12 月
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 12 /backup/borgrepo

提取与校验

提取与校验
# 只提取归档中的单个文件(路径按仓库内路径写)
borg extract /backup/borgrepo::web-2026-10-12 var/www/site/index.html
# 校验仓库与数据块(--verify-data 会读取数据并校验)
borg check --verify-data /backup/borgrepo
# 1.2 及以上:prune 删除归档后还需 compact 才真正释放空间
borg compact /backup/borgrepo

常用子命令读法

子命令作用注意点
init创建仓库并选择加密模式模式一旦确定难以更改,恢复路径也随之确定
create把指定路径打包成归档路径写法决定归档内结构,恢复时按同一口径提取
list列出归档或归档内文件用于确认时间点与路径,再做提取
prune按保留策略删除旧归档只删归档引用,空间需 compact 才释放
check --verify-data读取数据块并校验完整性耗时长,适合定期抽样或离线验证
仓库口令与密钥文件要单独备份:没有它们,仓库里的数据无法解密恢复,备份库等同于一堆密文。
自研备份脚本调用 borg 时要处理锁:同一仓库同时执行 create 与 prune 会发生锁冲突,建议错峰或串行调度。

易错点

  • repokey 与 keyfile 模式选错:密钥位置不同决定恢复路径,模式选择要事前想清楚
  • prune 后忘记 compact:归档引用删了空间没释放,仓库持续膨胀
  • 仓库口令丢失无备份:所有归档永久不可读,且没有技术手段绕过
  • 同一仓库并发执行备份与 prune:锁冲突导致任务失败,甚至产生额外的中间数据

数据来源与参考

  • BorgBackup 官方文档(create / prune / check)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌