BorgBackup 配置参数详解

详解 borg 1.2.8 的核心配置体系:BORG_* 环境变量(BORG_REPO/BORG_PASSPHRASE/BORG_RSH)、加密模式(repokey/keyfile/blake2)、备份归档命名、压缩方式与 chunker 参数、保留策略 prune、global 与 create/check 常用 flags,附真实默认值

BorgBackupBorgBackup备份恢复2026/10/08

BorgBackup 配置参数详解

目标:系统解析 borg v1.2.8 的配置体系。borg 的配置主要分四层:加密与仓库初始化选项(borg init)、环境变量(BORG_*)、归档命名与 create 行为参数、清理保留策略(prune --keep-*)。本文聚焦最常用参数的真实语义与默认值,默认值来自 1.2.8 实测。

一、环境信息

  • borg 版本:v1.2.8
  • 仓库路径:/data/borg-repo
  • 加密模式:repokey BLAKE2b

二、加密模式(borg init)

borg init --encryption=<模式> 决定加密与密钥存放方式,是仓库的最核心属性,初始化后不可更改:

模式密钥位置加密说明
repokey仓库内AES-256+HMAC密钥随仓库,口令保护;方便但需防仓库丢失
repokey-blake2仓库内AES-256+BLAKE2b本文实测默认选用,哈希用 BLAKE2b
keyfile本机指定路径AES-256密钥独立文件,最安全
keyfile-blake2本机指定路径AES-256+BLAKE2b独立密钥 + BLAKE2b
plaintext无不加密仅去重不加密,禁止用于生产
authenticated无只认证校验篡改但不加密内容

⚠️ 加密模式在 init 时确定后不可更改。生产建议 repokey-blake2(省事且密钥随仓库,配合 key export 兜底)或 keyfile(独立密钥最高安全)。

export BORG_REPO=/data/borg-repo
export BORG_PASSPHRASE=q1w2e3r4
borg init --encryption=repokey-blake2 "$BORG_REPO"

三、BORG_* 环境变量

borg 通过大量 BORG_* 环境变量控制行为,命令行可用 --repo/--passphrase 等参数替代,但环境变量更便于脚本与容器注入:

环境变量作用说明
BORG_REPO仓库路径多数命令可省 --repo
BORG_PASSPHRASE仓库口令免交互;生产从密钥管理或容器 env 注入
BORG_RSH远程 ssh 命令覆盖 ssh 参数,如私钥路径
BORG_REMOTE_PATH远端 borg 路径远程备份时指定
BORG_CHECK_I_KNOW_WHAT_I_AM_DOING跳过安全校验用于 check 强制(勿滥用)
BORG_CACHE_DIR缓存目录默认 ~/.cache/borg
BORG_CONFIG_DIR配置目录默认 ~/.config/borg
BORG_KEYS_DIR密钥文件目录(keyfile)默认 ~/.config/borg/keys
BORG_CONFIG_*仓库内配置文件逐键覆盖高级

💡 容器与脚本中优先用环境变量注入口令,避免把密钥写进命令历史或配置文件明文。

四、归档命名(archive name)

归档名可引用占位符自动展开,常用 create "repo::<名称>":

占位符含义示例 → 值
{hostname}本机主机名host 4e9a45ab...(容器场景)
{now}本地时间戳2026-10-08T05:39:31
{utcnow}UTC 时间戳2026-10-08T05:39:31Z
{user}运行用户名root

典型归档名:

borg create "$BORG_REPO"::"host{hostname}-{now}" /data/backup-src
# 生成 host4e9a45ab11c5-2026-10-08T05:39:31

五、create / 备份行为参数

5.1 压缩(--compression)

控制备份块的压缩算法,默认 lz4(速度快、压缩比适中):

值说明
lz4默认;快,压缩比中
zlib / zlib,Nzlib 压缩(N 级别 0~9)
lzma / lzma,N高压缩比、慢
zstd,N / zstd,0-22现代均衡,内存/CPU 明显
none不压缩
borg create --compression zstd,3 "$BORG_REPO"::b1 /data/backup-src

5.2 过滤与排除(--exclude / --pattern)

按需排除无需备份的机器/临时文件(实测 borg create --help 摘录):

borg create --exclude '*.tmp' --exclude '/data/backup-src/cache' "$BORG_REPO"::b1 /data/backup-src
# 常用:-e/--exclude、--exclude-from FILE、--exclude-caches、--exclude-if-present NAME

💡 --exclude-caches 跳过含 CACHEDIR.TAG 的目录;--exclude-if-present .nobackup 可标记某目录不备份。

5.3 create 常用全局 flag

flag说明
-s, --stats输出统计(Original/Compressed/Deduplicated)
--list列出每个备份对象(A/U/d)
-n, --dry-run只演练不真实创建
-p, --progress进度条
--jsonJSON 输出(隐含 --stats)
-C, --compression压缩方式
-x, --one-file-system不跨文件系统
--paths-from-stdin从 stdin 读路径列表

5.4 块大小(--chunker-params,高级)

borg create --chunker-params 19,23,21,4095 "$BORG_REPO"::b1 /data/backup-src

💡 4 个参数分别为 min exponent、max exponent、hash mask、max window size。默认即去重均衡的配置,无特殊需求不要改。

六、check / 校验参数

borg check 校验仓库与归档一致性:

# 全量校验(repo + archives)
borg check "$BORG_REPO"

# 只校验仓库(快)
borg check --repository-only "$BORG_REPO"

# 只校验归档(含校验每个块的哈希)
borg check --archives-only "$BORG_REPO"
flag说明
--repository-only只查仓库级索引
--archives-only查所有归档内容
--verify-data校验块数据的哈希(最彻底,慢)
--repair如不完整则修复(危险,先备份)

⚠️ --repair 可能截断损坏数据,务必先 borg check --verify-data 定位,并在确认后谨慎使用。

七、清理保留策略(prune)

prune 删除过期归档,按 --keep-* 保留规则计算:

borg prune --dry-run --list \
  --keep-last 1 --keep-daily 2 --keep-weekly 1 "$BORG_REPO"
# Keeping archive (rule: secondly #1):     ...
# Keeping archive (rule: daily[oldest] #1): ...
选项含义
--keep-last N保留最近 N 个(与时间规则独立)
--keep-secondly N保留最近 N 个「秒级」归档
--keep-minutely N保留最近 N 个「分钟级」
--keep-hourly N保留最近 N 个「小时级」
--keep-daily N保留最近 N 个「日级」(当日最新)
--keep-weekly N保留最近 N 个「周级」(周一为代表)
--keep-monthly N保留最近 N 个「月级」
--keep-yearly N保留最近 N 个「年级」
--keep-within FORMAT保留指定时间段内所有(如 14d)
-n, --dry-run演练不删除
-p, --list打印每个归档的去留规则

⚠️ --keep-all 已废弃,改用 --keep-last N 等。保留规则彼此独立叠加,合理组合实现「多保留近期、精简远期」。

八、综合配置模板(每日增量 + 定期清理)

cat > /etc/borg.env <<'EOF'
export BORG_REPO=/data/borg-repo
export BORG_PASSPHRASE=q1w2e3r4
export BORG_RSH="ssh -i /root/.ssh/id_ed25519 -p 22"
EOF
source /etc/borg.env

borg init --encryption=repokey-blake2 "$BORG_REPO"

# 每日备份 + 按周维度清理
borg create --stats --compression zstd,3 "$BORG_REPO"::"host{hostname}-{now}" /data/backup-src \
  --exclude '*.tmp' --exclude '/data/backup-src/cache'

borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6 "$BORG_REPO"

# 定期校验
borg check "$BORG_REPO"

💡 适配「服务器级常规数据、每日全量加去重、按日月周保留」的生产场景;SSH 远程备份把 BORG_REPO 改为 user@host:/path 并在 BORG_RSH 指定私钥。

九、常见问题

Q1:加密模式能改吗?

不能。borg init 决定加密模式且不可更改。若需换模式需新建仓库重新备份。

Q2:--compression 与去重什么关系?

压缩在去重之后:先按块去重(只存唯一块),再对块压缩。两者共同决定存储占用,--stats 同时显示 Compressed 与 Deduplicated 便于观察。

Q3:check 时加 --verify-data 会很慢?

会。--verify-data 对每个数据块重新计算哈希,最彻底但最慢;定期(如每月)做一次即可,日常用默认快速校验。

Q4:远程备份报 Connection refused?

先确认远端 SSH 可达、BORG_RSH 私钥正确;远端需安装 borg(或用 BORG_REMOTE_PATH 指定 borg 可执行路径)。

十、参考链接