找回密码
 立即注册
搜索
查看: 4522|回复: 7

[软件] restic-全平台nas的加密增量快照备份神器

[复制链接]
     
发表于 2020-6-8 13:22 | 显示全部楼层 |阅读模式
本帖最后由 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特点便是:方便、快速、可靠、安全、高效、开源。
安装restic
restic基于go语言开发,因此对于*UNIX和BSD、Windows都有良好的支持,在大多数平台上,可以直接使用包管理工具安装,在一些没有包管理器的平台上,可以直接下载二进制包使用,例如群晖等。
我使用的nas安装的是openmediavault系统,基于Debian10,因此直接使用apt安装restic:
  1. sudo apt install restic
复制代码

restic能够结合rclone使用,增加连接的协议和网盘,我想要使用restic加密备份数据到googldrive,因此也安装了rclone:
  1. curl https://rclone.org/install.sh | sudo bash
复制代码

这里选用脚本安装而不是apt,主要是因为Debian10的apt仓库中rclone版本有些旧,不如直接用官方脚本安装最新版本。
如此,restic和rclone便都安装在nas了,下一步便能直接使用。
在这之后,为了防止restic的版本过旧,使用命令让它自动升级:
  1. sudo restic self-update
复制代码

如此一来,我们便安装好了最新版本的restic和rclone。
使用restic进行备份
为了让restic实现把本地文件备份到OneDrive,需要借助rclone连接,因此需要先设置好rclone。
restic支持下面几种协议和服务,但能够借助rclone实现对数十种协议的支持,包括OneDrive,GoogleDrive等网盘服务。


使用rclone连接到OneDrive的教程就直接略过了,网上有不少教程,而且这也不是本文的重点。
使用restic在OneDrive上备份大概分为初始化存储库、进行备份这两步。
首先是在OneDrive根目录下的“myphoto”文件夹进行初始化库:
  1. sudo restic init --repo rclone:onedrivedb:myphoto
复制代码

其中,“rclone:onedrivedb:myphoto”代表我在使用rclone建立的一个命名为onedrivedb连接的myphoto文件夹初始化一个restic备份库。
在这个过程中,会要求你输入加密库所用的密码。
初始化完成后,便能上传文件到库中进行备份了:
  1. 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中备份的数据恢复:
首先查看快照:
  1. restic -r rclone:onedrivedb:myphoto snapshots
复制代码

假如最新的快照编号是79766175,我们可以输入快照编号进行恢复。
  1. 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作为你的数据备份工具。
参考:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

发表于 2020-6-8 17:50 | 显示全部楼层
看起来不错
回复

使用道具 举报

     
发表于 2020-6-8 21:57 | 显示全部楼层
群晖直接加密同步百度云不香吗?
回复

使用道具 举报

     
发表于 2021-3-11 19:19 | 显示全部楼层
大半年过去不知道楼主Restic这套方案用得怎样
Restic没有GUI维护有点不方便,用着Duplicati感觉还行
回复

使用道具 举报

     
发表于 2021-3-11 19:37 来自手机 | 显示全部楼层
seafile免费专业版(3用户限制)+https加密也是一样的吧,还有各个平台的客户端
回复

使用道具 举报

     
发表于 2021-3-11 19:42 来自手机 | 显示全部楼层
感觉挺不错的,目前本地快照是用的btrfs subvolume,远程rclone手动同步,感觉这个远程快照挺不错的

—— 来自 OnePlus KB2000, Android 11上的 S1Next-鹅版 v2.4.4
回复

使用道具 举报

     
发表于 2021-3-12 15:23 | 显示全部楼层
开起 发表于 2021-3-11 19:42
感觉挺不错的,目前本地快照是用的btrfs subvolume,远程rclone手动同步,感觉这个远程快照挺不错的

——  ...

btrfs send/receive 可以过ssh远程备份
回复

使用道具 举报

     
发表于 2021-3-12 18:25 | 显示全部楼层
Damenly 发表于 2021-3-12 15:23
btrfs send/receive 可以过ssh远程备份

receive需要把一个subvolume锁定为只读,send结束以后解除只读,不是很好用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-7-21 02:16 , Processed in 0.038548 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表