Total Pageviews

Thursday 13 May 2021

borgbackup:开源的数据备份工具

我考虑了一下最后选择用borgbackup。

borgbackup可以删除重复数据,还支持zstd压缩,可以节省很多存储空间,所以就用它了。。

需要备份数据的机器(以下简称A)和用来存储备份数据的机器(以下简称B)都需要安装borgbackup:

apt -y update
apt -y install wget
wget https://github.com/borgbackup/borg/releases/download/1.1.15/borg-linux64
mv borg-linux64 /usr/local/bin/borg
chmod +x /usr/local/bin/borg

在B机器上创建一个用户并修改密码:

useradd -m -s /bin/bash borgbackup
passwd borgbackup

默认情况下用户的主目录创建在/home下,这个目录也是后续我们存储备份数据的目录。

如果你需要更改这个用户的主目录,在创建用户的时候使用下面的命令:

useradd -m -d /var/borgbackup -s /bin/bash borgbackup

在A机器上生成SSH密匙对:

ssh-keygen -t ed25519

把A机器的公钥拷贝到B机器:

ssh-copy-id borgbackup@1.2.3.4

borg支持加密,所以在创建存储库的时候可以选择加密还是不加密。

我是用来备份bitwarden_rs的数据,原始数据已经是加密过的了,所以没有必要再进行加密。

使用下面的命令在机器A上创建一个没有加密的初始存储库:

borg init -e none borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs

如果你要加密的话也可以,就是恢复数据的时候比较麻烦,因为它需要你同时拥有密钥和密码才能恢复,这里我也记录一下。

使用下面的命令创建加密存储库:

borg init -e keyfile borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs

此时会让你配置一个密码:

Enter new passphrase: 
Enter same passphrase again: 
Do you want your passphrase to be displayed for verification? [yN]:

这个密码如果你忘记了,你的数据也就GG了,所以密码要妥善保管。

除此之外,你还需要把密钥备份出来,因为之前说过恢复数据的时候光有密码是不够的还需要密钥:

borg key export borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs ~/key

上面这条命令会将你的密钥备份到当前用户的主目录下,命名为key。这个文件你也需要妥善保管,建议备份到多个位置,例如手机、电脑、网盘、U盘。

假设某一天你的密钥丢了,将你备份的密钥传到机器A上面,使用下面的命令重新导入:

borg key import borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs ~/key

做完上面这些之后,现在我们可以尝试进行第一次备份了:

borg create --compression zlib,9 borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs::20210305 /opt/bitwarden_rs

上面这条命令备份了机器A的/opt/bitwarden_rs目录,备份名称20210305,使用了zlib压缩方法,压缩等级9(最高压缩率)

查看全部备份:

borg list borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs

查看某一个备份,例如刚才备份的20210305:

borg list borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs::20210305

恢复备份:

borg extract borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs::20210305

删除备份:

borg delete borgbackup@1.2.3.4:/home/borgbackup/bitwarden_rs::20210305

关于恢复备份官方还有一个mount的命令,大概意思就是把远程存储库直接挂载到本地上,我没有试过这种方法,看官方的介绍,这个方法似乎没有extract好用:

https://borgbackup.readthedocs.io/en/stable/quickstart.html#restoring-a-backup

另外还有一个prune的命令,这个是修剪备份的数据,如果备份的数据很多,用delete命令的话就不太方便了,此时可以用prune:

https://borgbackup.readthedocs.io/en/stable/usage/prune.html

No comments:

Post a Comment