服务器上 rm -rf 一句手滑、勒索软件一波加密,几年攒的数据可能瞬间归零。快照能挡一部分,但快照和源站在同一台机器、同一账号下,物理故障和误操作照样一起没。BorgBackup 是块级去重 + 加密的备份工具:首次全量、之后只传变化块,仓库加密存储,还能挂载归档随手翻找单文件。本文用雨云 KVM 云服务器把它配成自动增量备份。
为什么选 BorgBackup
普通 rsync 镜像是「另一份一模一样的文件」,删了源就删了备、中了勒索备的也一起加密。Borg 的三个机制解决这个:
- 块级去重:相同内容只存一次,几十个相似备份也不爆盘;
- 加密仓库:数据在写盘前就加密,备份落到对象存储也不怕被看;
- 保留策略:按「每天保留 7 份、每周 4 份、每月 6 份」自动 prune,既能回滚又控总量。
它和快照、对象存储是三层互补:对象存储 当异地仓库、Borg 负责去重加密的归档逻辑、快照管系统盘即时回滚。三者叠加才叫稳。
服务器与部署
Borg 用 Python 写,雨云 KVM(官网入口)Debian 12 上 apt install borgbackup 即可,下单优惠码填 admin01 五折,7 天无理由退款。没用过雨云的先看 选购与上手指南。
1. 初始化仓库(本地或挂载的对象存储目录):
export BORG_PASSPHRASE='你的强口令'
borg init --encryption=repokey-blake2 /opt/backup-repo
repokey-blake2 把密钥存在仓库里、用口令加密——口令丢了谁都解不开,一定单独记好。
2. 备份脚本 /opt/backup.sh:
#!/bin/bash
export BORG_PASSPHRASE='你的强口令'
REPO=/opt/backup-repo
borg create -v --stats --compression zstd,3
$REPO::{hostname}-{now:%Y%m%d-%H%M}
/var/www /etc /home
--exclude '/var/www/*/cache'
borg prune -v --list $REPO --keep-daily=7 --keep-weekly=4 --keep-monthly=6
3. 定时:crontab -e 加 0 3 * * * /opt/backup.sh,每天凌晨自动跑。备份前先把数据库 dump 出来(如 LNMP 站点 的 MySQL),再一起进仓库。
日常使用姿势
- 找回单文件:不用全量恢复,直接挂载归档当目录翻——
borg mount $REPO::archive-name /mnt/recover,进去拷出要的文件再umount; - 列备份清单:
borg list $REPO看有哪些归档,borg info $REPO::归档名看占用; - 异地仓库:把
/opt/backup-repo放在 对象存储挂载目录 或另一台机器上,源站宕了备份还在; - 校验:偶尔
borg check $REPO确认归档没损坏。
踩坑记录
- 口令写进脚本明文:脚本若被泄露,仓库等于没加密。正确做法是放环境变量(如上)或专用的 secret 文件,权限设
600。 - 首次备份慢:块级去重首跑要分块建索引,几 G 数据可能十几分钟;之后增量只传改动块,几分钟完事,别因为第一次慢就放弃。
- 挂载需 fuse:
borg mount依赖 FUSE,容器或最小系统里可能缺fuse包,装一下即可。 - 磁盘被 prune 前的归档占满:保留策略配太松会撑爆盘。先用
borg prune --dry-run看会留多少,再正式跑。
合规提醒
备份中常含数据库、用户信息等敏感内容。Borg 仓库已加密,但口令与服务器访问权仍需严格管控;备份数据按最小权限留存,异地副本同样受《网络安全法》《数据安全法》约束,不得违规留存或外传他人信息。
小结
备份的本质不是「多一份拷贝」,而是「坏掉能回到过去」。BorgBackup 用块级去重把成本压下来、用加密把安全锁上、用 prune 把总量控住——一台 1 核 1G 的雨云 KVM 跑备份脚本绰绰有余,优惠码 admin01 五折。把它和对象存储、快照叠成三层,下次手滑或中招时,你还能从容 borg mount 把文件捞回来。






