前言

硬盘有价数据无价,本站的MySQL数据库曾经损坏导致数据丢失,不过幸好从最备份中找回了大部分数据。本人也经历过多次硬盘损坏事故,但是部分珍贵数据由于只有一份,就没办法找回来了。对于一些重要数据,经常备份是非常重要的。数据的3-2-1备份原则告诉我们,重要数据至少要有3份副本,其中存放在两种不同的介质上,1份副本需要异地存储。虽然离世界备份日还有一段时间,但还是要提醒各位多多备份重要数据。

当前Lotlab使用了一个手工维护的shell脚本,将数据库和重要文件打包到一个压缩文件中,然后将其上传到dropbox。这个方案一直还算好用,但由于网盘空间限制,它只备份最重要的一些数据。诸如Wordpress本体程序等较大的数据,是不会备份的。

为了解决这个备份还原起来非常痛苦的问题,之后使用了 rsync 对数据做完整备份。这个备份能够迅速地将服务器环境还原为上次备份的状态,但其没有版本控制,万一在数据丢失后又做了一次同步则文件会完全丢失。为了防止误删,rsync配置为append only,但是这又会导致备份文件中会一直含有已经删除的不需要的文件。

因此,我们需要一个更专业的备份工具。BorgBackup是一个老牌备份工具,其支持数据的版本控制、去重、压缩、加密等功能,能够满足数据版本控制需要。虽然BorgBackup有那么多优点,但其只能通过命令行传参使用,不方便配置修改。BorgMatic是BorgBackup的一个管理工具,它将基于yaml的配置文件转换为BorgBackup的命令,并提供了一系列的自动化功能,使BorgBackup更方便使用。

安装

首先安装borgbackup,直接从包管理工具安装就好。我这里用的是debian系的系统,直接

sudo apt install borgbackup

然后是装borgmatic,官方文档建议使用pip安装,但你也可以使用系统包管理工具安装。对于Debian,包管理工具的版本要落后于pip源,不过 debian-backports的版本还算新,推荐使用。

sudo pip3 install --user --upgrade borgmatic # 仅为root用户安装
sudo pip3 install --upgrade borgmatic # 或者,为全局系统安装
sudo apt install borgmatic # 或者,使用包管理工具为全局系统安装

如果你使用的是第一条命令,只为root用户安装,那么你还需要将用户路径添加到PATH环境变量。

echo export 'PATH="$PATH:/root/.local/bin"' >> ~/.bashrc
source ~/.bashrc

在安装完毕后,使用下面命令检查应用版本:

borg --version
sudo borgmatic --version

配置

使用以下命令会在 /etc/borgmatic/config.yaml 位置生成一个示例配置文件,我们对着这个配置改就好

sudo generate-borgmatic-config

需要改的配置有:
– source_directories: 要备份的文件夹
– repositories: 备份的目标文件夹
– exclude_patterns: 设定忽略哪些文件(通常是缓存)
– retention: 备份保留策略

在这里,我们使用另一台主机作为备份存储位置,假设其地址为 example.org。建议专门为备份操作添加一个新用户,假设用户名为 borg。

由于我们使用root用户备份,所以我们需要设定root用户免密登录目标计算机:

sudo ssh-keygen
sudo ssh-copy-id borg@example.org

为了保证更高的安全性,你可以限制这个账户登录到主机后能运行的命令。编辑 ~/.ssh/authorized_keys 文件,在你刚刚添加的公钥前面添加下面的文本,即可限制这个公钥只能运行指定的命令:

command="borg serve --restrict-to-path /path/to/repo",restrict ssh-rsa AAAAB3[...]

设置完毕后,修改上面的配置文件中的 source_directories,设定为目标目录:

location:
    source_directories:
        - /home
        - /etc
    repositories:
        - ssh://borg@example.org/your_backup_path

然后使用下面的命令初始化存储库:

sudo borgmatic init --encryption repokey

初始化的过程中会让你输入库密码。你也可以在配置文件或环境变量中指定这个密码,以便自动化操作。

storage:
    encryption_passphrase: "password"

初始化完毕后,运行下面的指令即可开始手动备份:

sudo borgmatic create --verbosity 1 --list --stats

如果一切正常,你的数据就能备份到目标目录了!

最后的最后,使用以下命令添加定时备份任务:

sudo systemctl enable --now borgmatic.timer

参考资料

分类: Linux

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注