Restic是使用Golang写的一款开源免费且快速,高效和安全的跨平台备份程序,可以存储在本地,云存储服务或远程文件服务器上,并且使用加密技术来你的数据安全性和完整性,同样支持增量备份,可随时备份和恢复备份。并支持3种主要的操作系统LinuxmacOSWindows及一些较小的操作系统FreeBSDOpenBSD等。

支持的存储:

安装

Github地址:https://github.com/restic/restic

Restic可以直接通过系统软件包安装,不过版本好像都有点旧,这里就选择最新的二进制方式安装。

二进制下载地址→传送门,先根据自己的架构选择对应的最新版本,这里只说Linux系统,Windows系统直接下载解压就行了。

使用命令:

之后可以直接使用restic self-update命令升级二进制文件。

配置存储库

安装好了Restic后,还需要配置下存储方式,也就是你想备份到服务器本地,还是其它远程服务上。以下配置过程中都会要你输入密码,别忘了,不然就找不回来了。

这里只说常用的本地、sftprclone备份方式,其它的远程库配置可以看下官方文档→传送门

1、备份到本地

2、SFTP方式
该方法适合将文件备份到另一台VPS服务器。首先我们需要在要备份的服务器上生成个公钥再复制给另一台远程服务器,这样就可以实现免密码登录了。

先使用SSH客户端登录服务器A,使用命令:

这里会要你命名密匙名称(这里建议使用默认名称),然后连续按几次Enter,这时候会在/root/.ssh文件夹生成2ssh密钥,然后我们查看公钥id_rsa.pub

复制好公钥。

再使用SSH登录服务器B,使用命令:

如果提示No such file or directory错误信息,先使用mkdir ~/.ssh命令,再重新使用上面的命令。然后免密登录就配置完成了。

然后在服务器A上使用命令:

如果服务器B端口非22,就需要配置下了,在服务器A~/.ssh目录创建config文件,使用命令:

新增以下参数:

从上至下的参数为服务器Bip、用户名和端口。然后重启ssh

此时可以直接在服务器A上使用新的命令:

此时输入2次密码就完成了。

3、Rclone方式
先在服务器上安装Rclone,并配置Rclone,方法参考:

只需要完成配置环节,启动的话,就交给Restic了。

再使用命令:

开始备份

使用命令:

运行命令后会要求你输入密码,然后备份后会在存储文件夹的snapshots目录生成一个十六进制的文件。如果备份数据出现重复,则会自动跳过。如果文件夹有文件出现修改(包括修改时间)才会进行下一次备份。

这里如果使用rclone挂载Gdrive的,建议自己申请一个api,博主测试了下,会出现一堆 Error 403: Rate Limit Exceeded, rateLimitExceeded错误。申请教程→传送门

你还可以用参数排除不想备份的文件夹或者文件,命令示例:

具体用法可以参考下官方文档→传送门

restic还支持命令传输,比如备份数据库文件夹,这里以sftp为例,其它方式自行修改-r后面参数,使用命令:

备份好了后,可以使用命令查看备份文件,使用命令:

这里没有使用标签参数,所以tags那里是空的,不过我们可以在备份的时候加入标签参数--tag,使用命令:

最后还可以直接使用命令删除备份文件,使用命令:

恢复备份

如果我们需要将远程存储文件夹的abcd备份文件恢复到本地/rats文件夹,这里以sftp为例,其它方式自行修改-r后面参数。

使用命令:

脚本备份

上面备份的时候,都需要输入密码,肯定不适合脚本自动备份,所以我们还需要使用--password-file参数来达到自动读取密码的步骤。

使用命令:

然后此时就不需要你再输入密码了,这时候就方便自己写脚本自动备份文件了。

然后最后博主也没过多的研究,只是大概的了解下,有兴趣的可自己仔细研究下官方文档→传送门