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 会发生锁冲突,建议错峰或串行调度。