Borgbackup | 优异的Linux备份软件(使用指北)
First
What is Borgbackup | 啥是 Borg ?
BorgBackup,通常简称为 Borg,是一个高效的去重备份工具,专为 Unix/Linux 系统设计。它的主要特点包括数据压缩、加密、去重以及高效的远程备份能力。BorgBackup 的设计目标是提供一种安全、快速、可靠的备份解决方案,适用于本地和远程备份场景。
上述描述来自ChatGPT
OS & SW Version
OS

SW

Install | 安装
绝大多数发行版可以直接使用包管理器安装Borgbackup
Debian
apt install borgbackup
openSUSE
zypper in borgbackup

Fedora/RHEL
dnf install borgbackup
Use | 使用
backup | 备份
borg init | 初始化
borgbackup有仓库的概念
可以简单理解为其的根据地
后期会将所有的备份文件全部存储至指定的仓库内
使用borg init命令初始化仓库
borg init -e repokey-blake2 /#仓库路径
# -e 指定加密类型
# borg 加密分为密码和密钥 repokey 则为将密钥存储在存储库中
# blake2则为加密算法
# 上述过程需要输入密码 请牢记此密码 丢失后则无法访问所有备份文件
### !!!一旦加密完成 将无法更改加密模式 并且一个存储库有且只有一种加密方式!!! ###

Borg默认开启增量备份
borg create | 创建备份
使用 borg create 创建备份
# 示例
borg create /path/to/repo::my-documents ~/Documents
# 备份~/Documents文件夹并把其命名为my-documents
# 进阶
/usr/bin/borg create --progress --stats /home/borgbackup::ALL_DISK-$(date +\%Y-\%m-\%d) / --exclude /mnt --exclude /proc --exclude /sys --exclude /dev --exclude /tmp --exclude /run --exclude /var/cache --exclude /var/tmp --exclude /lost+found --exclude /home/borgbackup --exclude /.snapshots
# 显示进度和状态 备份/分区并排除自定义目录且将备份文件按照ALL_DISK-data格式命名
# 其中 --one-file-system 参数仅备份当前文件系统 并不会备份挂载的任何文件系统
例如并不会挂载nfs或者其他驱动器挂载的目录

恢复
borg extract | 提取备份文件
# 示例
borg extract /path/to/repo::my-files的所有文档
# 提取/path/to/repo存储库中名为my-files的所有文档
# 进阶
borg extract --stdout /home/borgbackup::ALL_DISK-2024-08-27 etc/haproxy/haproxy.cfg > /etc/haproxy/haproxy.cfg
# 提取/home/borgbackup存储库中名为ALL_DISK-2024-08-27的文件路径etc/haproxy/haproxy.cfg并将其恢复至当前/etc/haproxy/haproxy.cfg

需要注意的是borg默认提取文件至当前目录 所以请在使用borg extract命令时cd到指定目录 若需要恢复单个文件或者检查整个备份文件 建议使用mount挂载borg存储文件至文件系统后使用rsync等工具直接复制迁移
Other | 其他
borg list | 列出
使用borg list可以列出想要知晓的内容
borg list /path/to/repo

borg prune | 修剪
如果按照每天备份的频率而不进行清理的话 备份文件将会显得杂乱无章
这里我们可以使用borg prune命令来对备份文件进行修剪清理
borg prune -v --list --dry-run --keep-daily=7 --keep-weekly=4 --keep-monthly=-1 /path/to/repo
# 修剪/path/to/repo下的备份文件,留存过去七天&每周一份&月末档案 将其余的修剪掉
# 这里强烈建议加上--dry-run让其展示运行结果但不实际运行 确认没问题后去掉此参数即可

注意在borg中,无论是delete还是prune对文件做删除操作 均需要运行borg compact才可释放空间
borg mount | 挂载备份
前面说过如果需要恢复多个单个文件或对备份的整个目录进行审视建议使用borg mount挂载至文件系统后进行后续操作
borg mount /path/to/repo /tmp/mymountpoint
# 将/path/to/repo存储库挂载至/tmp/mymountpoint目录下

Ex | 拓展
&Crontab
我们可以结合crontab实现定时定量备份
但当我们创建或查看或列出备份时 Borg均会要求我们输入仓库密码
似乎使用crontab又变得不可行了
但Borg早就考虑到了这个问题
我们可以使用BORG_PASSCOMMAND='cat ~/.borg-passphrase'将其指定给Borg shell
其中~/.borg-passphrase文件存有Borg的Password
BORG_PASSCOMMAND='cat ~/.borg-passphrase' borg list /path/to/repo

比葫芦画瓢 则我们可以在crontab中这样写
00 18 * * * BORG_PASSCOMMAND='cat ~/.borg-passphrase' borg create /path/to/repo::my-documents ~/Documents
# 在每天的18:00备份~/Documents至/path/to/repo仓库并命名为my-documents
注意borg-passphrase文件的赋权 请禁止普通用户访问此文件
ALL Over | 总结
borg 是一款非常易用且快速的备份软件
定期备份以确保你的Linux安全无虞