一款开源免费且快速,高效和安全的跨平台备份程序:Restic使用教程

发布于 2019-05-21  3.48k 次阅读


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

/etc/init.d/sshd restart #centos系统

/etc/init.d/ssh restart #debian、ubuntu系统

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

#参数详解可以参考上面

restic -r sftp:1.1.1.1:/backupb init

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

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

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

再使用命令:

开始备份

使用命令:

#该命令是备份/rats整个文件夹,如果备份单个文件,比如/rats.zip,那后面就改成/rats.zip
   
#本地备份

restic -r /backup --verbose backup /rats

#sftp备份

restic -r sftp:1.1.1.1:/mbackup --verbose backup /rats

#rclone备份

restic -r rclone:RATS:/backup --verbose backup /rats

#对于rclone,还可以加一些rclone参数优化下,比如使用--bwlimit限制传输带宽

restic -o rclone.program="/usr/bin/rclone" \

  -o rclone.args="serve restic --stdio --bwlimit 1M --verbose" \

  -r rclone:RATS:/backup backup /rats

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

--exclude 指定一次或多次以排除一个或多个项目

--exclude-caches 指定一次以排除包含特殊文件的文件夹

--exclude-file 指定一次或多次以排除给定文件中列出的项目

--exclude-if-present 如果文件夹内容包含给定文件,则指定一次或多次排除文件夹内容

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

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

#比如将Typecho数据库备份到远程sftp,并命名typecho.sql,其它远程库就自己模仿

mysqldump -uroot -ppasswd typecho | restic -r sftp:1.1.1.1:/moerats backup --stdin --stdin-filename typecho.sql

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

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

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

#比如删除bcde备份文件

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

使用命令:

restic -r sftp:1.1.1.1:/moerats restore abcd --target /rats

#你也可以直接使用latest来恢复最后一次的备份文件

restic -r sftp:1.1.1.1:/moerats restore latest --target /rats
#如果你只想备份其中的一个文件夹/文件,使用--include参数,后面接文件/文件夹;如果不想备份其中的文件,那就使用--exclude参数即可,记得使用备份时文件的绝对路径。

脚本备份

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

使用命令:

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

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