本帖最后由 KnightHart 于 2020-6-8 14:12 编辑
前言自从使用了nas以来,一直都希望在Linux平台找到一个安全高效,易用的备份工具,前前后后用了Rclone,Duplicati,Syncthing,Borgbackup等,但上面的工具均有一些问题不能满足我的需求,例如rclone虽然作为一个同步工具很好用,但作为加密备份工具,它的设置比较麻烦,而且不支持快照,Duplicati有个方便的GUI界面,docker安装也相当省事,可惜稳定性捉急,我上传一百多G的电子书到OneDrive一直失败,Syncthing作为多台主机间的同步工具很好用,但作为备份工具无法加密备份,而且必须要求另一台机器也安装Syncthing,目前是作为我在nas、PC和Android手机间的同步工具。Borgbackup则是拓展性插,和rclone兼容性也很差,试了下无法连接到rclone挂载的文件。 总结一下我的需求,差不多就是这几点: 1.支持多种协议和网盘,最起码得支持OneDrive和GoogleDrive。 2.支持加密备份:我不希望自己的私人数据直接上传到网盘,尤其是照片。 3.稳定高效,操作简单。 4.支持Linux。 5.增量备份、最好支持快照系统。 在找了一圈后,我发现了Restic这个全平台的备份神器,刚好能满足上面的这些需求,而且在我的Linux系统nas上运行了近一个月,相当稳定。 官方所总结的restic特点便是:方便、快速、可靠、安全、高效、开源。 安装resticrestic基于go语言开发,因此对于*UNIX和BSD、Windows都有良好的支持,在大多数平台上,可以直接使用包管理工具安装,在一些没有包管理器的平台上,可以直接下载二进制包使用,例如群晖等。 我使用的nas安装的是openmediavault系统,基于Debian10,因此直接使用apt安装restic:
restic能够结合rclone使用,增加连接的协议和网盘,我想要使用restic加密备份数据到googldrive,因此也安装了rclone: - curl https://rclone.org/install.sh | sudo bash
复制代码
这里选用脚本安装而不是apt,主要是因为Debian10的apt仓库中rclone版本有些旧,不如直接用官方脚本安装最新版本。 如此,restic和rclone便都安装在nas了,下一步便能直接使用。 在这之后,为了防止restic的版本过旧,使用命令让它自动升级:
如此一来,我们便安装好了最新版本的restic和rclone。 使用restic进行备份为了让restic实现把本地文件备份到OneDrive,需要借助rclone连接,因此需要先设置好rclone。 restic支持下面几种协议和服务,但能够借助rclone实现对数十种协议的支持,包括OneDrive,GoogleDrive等网盘服务。
使用rclone连接到OneDrive的教程就直接略过了,网上有不少教程,而且这也不是本文的重点。 使用restic在OneDrive上备份大概分为初始化存储库、进行备份这两步。 首先是在OneDrive根目录下的“myphoto”文件夹进行初始化库: - sudo restic init --repo rclone:onedrivedb:myphoto
复制代码
其中,“rclone:onedrivedb:myphoto”代表我在使用rclone建立的一个命名为onedrivedb连接的myphoto文件夹初始化一个restic备份库。 在这个过程中,会要求你输入加密库所用的密码。 初始化完成后,便能上传文件到库中进行备份了: - sudo restic -r rclone:onedrivedb:myphoto --verbose backup /srv/4c6cf5a1-fa58-44e8-b26c-f0490354bf85/calibrebooks/books/我的照片
复制代码
其中“/srv/4c6cf5a1-fa58-44e8-b26c-f0490354bf85/calibrebooks/books/我的照片”则是我的照片路径。 restic的备份是增量备份,并且每次备份都会建立一个当前状态的快照,这意味着每次备份只会备份增加的数据部分,而不是重新上传,只要有快照,就能恢复到文件建立快照时的数据。 如果本地的数据丢失,或者仅仅想要进行版本恢复的话,可以直接使用restic中备份的数据恢复: 首先查看快照: - restic -r rclone:onedrivedb:myphoto snapshots
复制代码
假如最新的快照编号是79766175,我们可以输入快照编号进行恢复。 - restic -r rclone:onedrivedb:myphoto restore 79766175 --target /tmp/restore-work
复制代码
通过上面的操作,我们便把备份的照片存储库中快照编号为79766175的数据全部恢复到“/tmp/restore-work”这个目标文件夹。 一些额外设置1.脚本编写 很多情况下,我们并不需要手动输入命令进行备份,希望编写脚本和计划任务让它自动运行,而这时候就有一个问题:我们需要在执行脚本的时候就把密码输入进去。 解决这个问题的方法很多,例如直接使用管道echo password|restic commands 将密码输入进去,或者将密码保存在一个本地文件,让restic读取,或者通过设置RESTIC_PASSWORD环境变量输入密码。 2.按照规则删除快照 快照是个好东西,但快照同样会占据空间,例如你原本备份有40g的数据,删除了30g,但由于快照系统,你的存储库还是占据了40g的空间。或者是单纯过时没用了,如果你不想手动管理快照的话,可以使用restic的forget命令自动删除快照,例如:
--keep-last n----------保存最新的n个快照
--keep-hourly n--------保存过去n个小时内每小时的最新快照
--keep-weekly n--------保存过去n个星期内每一周的最新快照
有些规则之间是相互兼容的,但遇到冲突的会进行“保存”处理,还不是直接删除,例如如果你想最近一周内的每天一个快照、最近一个月的每周都有个快照,最近一年的每月都有一个快照,你可以这样写:
--keep-last n----------保存最新的n个快照
--keep-hourly n--------保存过去n个小时内每小时的最新快照
--keep-weekly n--------保存过去n个星期内每一周的最新快照
需要注意的是,删除快照并不会直接删除数据,而是类似于Windows回收站,还需要执行prune命令才会把数据彻底删除,建议三思而行。 总结restic是一款相当出色的备份工具,它使用简单方便,安全性高,同时还有快照和增量备份功能,搭配rclone更是**增强了它的实用性和适用范围,同时由于它是跨平台和开源的,在各个主流平台都可以用同一款备份工具。 如果你对于命令行工具不是特别抗拒的话,强烈建议使用restic作为你的数据备份工具。 参考:
|