搬瓦工 VPS 部署 BorgBackup 去重备份工具教程

BorgBackup(简称 Borg)是一款功能强大的去重备份程序,使用 Python 编写并包含 C 扩展以提升性能。Borg 的核心优势在于其卓越的去重和压缩能力,相同的数据块在仓库中只存储一次,配合 LZ4/ZSTD 压缩,可以极大地节省存储空间。Borg 在备份大量小文件和数据库转储方面表现尤为出色。本教程将介绍如何在搬瓦工 VPS 上安装和使用 BorgBackup。

一、BorgBackup 特性概览

  • 高效去重:基于可变长度分块算法,文件内部和跨文件去重效果极佳。
  • 多种压缩算法:支持 LZ4(快速)、ZSTD(均衡)、LZMA(高压缩比)。
  • 客户端加密:备份数据在发送到仓库之前就已加密(AES-256-CTR + HMAC-SHA256)。
  • 远程仓库:通过 SSH 协议支持远程备份,仅需目标机器安装 Borg。
  • 快速操作:得益于去重缓存和内容索引,增量备份极其快速。

二、安装 BorgBackup

# Ubuntu/Debian
apt update
apt install borgbackup -y

# 或使用 pip 安装最新版
pip install borgbackup

# CentOS(通过 EPEL)
yum install epel-release -y
yum install borgbackup -y

# 验证
borg --version

三、创建备份仓库

3.1 本地仓库

# 创建加密仓库(推荐 repokey 模式)
borg init --encryption=repokey /backup/borg-repo

# 导出仓库密钥(务必安全保管)
borg key export /backup/borg-repo /root/borg-key-backup.txt

3.2 远程仓库(SSH)

# 在远程备份服务器上也需要安装 borg
# 然后通过 SSH 初始化仓库
borg init --encryption=repokey ssh://backup-user@backup-server:22/backup/borg-repo

# 建议配置 SSH 密钥登录
ssh-keygen -t ed25519 -f ~/.ssh/borg_key -N ""
ssh-copy-id -i ~/.ssh/borg_key backup-user@backup-server

四、执行备份

# 设置仓库密码环境变量
export BORG_PASSPHRASE="your_borg_password_2026"
export BORG_REPO="/backup/borg-repo"

# 创建备份归档(使用日期命名)
borg create \
  --stats --progress \
  --compression zstd,6 \
  --exclude '*.log' \
  --exclude 'node_modules' \
  --exclude '.git' \
  --exclude '__pycache__' \
  ::vps-{now:%Y-%m-%d_%H%M} \
  /opt/app /var/www /etc/nginx

# 备份数据库
mysqldump -u root --all-databases | \
  borg create --stdin-name mysql-dump.sql \
  --compression zstd,6 \
  ::mysql-{now:%Y-%m-%d_%H%M} -

# 查看备份统计
borg info ::vps-2026-03-28_0300

五、管理归档

# 列出所有归档
borg list

# 查看归档中的文件列表
borg list ::vps-2026-03-28_0300

# 查看仓库详细信息
borg info

# 查看归档详细信息
borg info ::vps-2026-03-28_0300

# 对比两个归档的差异
borg diff ::vps-2026-03-27_0300 ::vps-2026-03-28_0300

六、数据恢复

# 恢复整个归档
cd /opt/restore
borg extract ::vps-2026-03-28_0300

# 恢复特定文件或目录
borg extract ::vps-2026-03-28_0300 opt/app/config

# 恢复数据库转储
borg extract --stdout ::mysql-2026-03-28_0300 | mysql -u root

# 挂载归档为文件系统
mkdir -p /mnt/borg
borg mount :: /mnt/borg
# 浏览后卸载
borg umount /mnt/borg

七、保留策略

# 按策略删除旧归档
borg prune \
  --keep-within 2d \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 6 \
  --stats

# 释放已删除归档占用的空间
borg compact

八、自动化备份脚本

cat > /opt/borg/backup.sh <<'EOF'
#!/bin/bash
set -euo pipefail

export BORG_PASSPHRASE="your_borg_password_2026"
export BORG_REPO="ssh://backup-user@backup-server/backup/borg-repo"
export BORG_RSH="ssh -i /root/.ssh/borg_key -o StrictHostKeyChecking=accept-new"

LOG="/var/log/borg-backup.log"

log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG"; }

log "=== 开始 Borg 备份 ==="

# 数据库备份
docker exec postgres pg_dumpall -U postgres > /tmp/pg-dump.sql
log "数据库导出完成"

# 创建归档
borg create \
  --stats --compression zstd,6 \
  --exclude '*.log' --exclude 'node_modules' --exclude '.git' \
  ::auto-{now:%Y-%m-%d_%H%M} \
  /opt/app /var/www /etc/nginx /tmp/pg-dump.sql 2>> "$LOG"
log "归档创建完成"

rm -f /tmp/pg-dump.sql

# 清理旧归档
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6 2>> "$LOG"
borg compact 2>> "$LOG"
log "旧归档清理完成"

# 每周日验证仓库
if [ "$(date +%u)" -eq 7 ]; then
  borg check 2>> "$LOG"
  log "仓库完整性检查通过"
fi

log "=== 备份完成 ==="
EOF

chmod +x /opt/borg/backup.sh

# 定时任务:每天凌晨 2 点
(crontab -l 2>/dev/null; echo "0 2 * * * /opt/borg/backup.sh") | crontab -

九、常见问题

仓库被锁定

# 如果上次备份异常中断,仓库可能被锁定
borg break-lock

备份速度优化

调整压缩级别可以在速度和压缩率之间取得平衡。LZ4 最快但压缩率低,ZSTD 是推荐的均衡选择,LZMA 压缩率最高但速度慢。

密钥丢失恢复

repokey 模式的密钥存储在仓库内,只需记住密码即可。但强烈建议导出密钥文件并安全保管。

总结

BorgBackup 的去重和压缩能力使其成为存储空间有限场景下的理想备份工具。与 Restic 相比,Borg 在去重效率和压缩选择上更有优势。如果需要将备份同步到云端存储,可以搭配 Rclone 使用。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,购买链接:bwh81.net

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。