linux下的增量备份工具rsnapshot介绍

本人一直在用群晖上的 Timebackup 插件,对群晖里面的资料进行定时备份(把某个时间点的状态保存下来,以备将来查询的需要),觉得非常方便,我用了几年了,无奈官方现在逐渐放弃了对 Timebackup 的更新和支持。而且不支持同一个硬盘的不同目录之间进行备份。于是我不得不转向寻找其他的办法,幸运的是找到了 rsnapshot,觉得还不错,推荐给大家。

rsnapshot 是什么?它是 linux 上面使用的一个增量备份工具,是建立在 rsync 基础上的一个高效增量备份工具,能快速的对当前状态进行一个“拍照”式记录(快照),除了第一次需要做一个完整的备份以外,后面的备份都是只备份新修改、增加的部分,但是看起来它就像一个完整的拷贝一样。真是快速高效的一个增量备份工具。

rsync 又是什么呢?它是 linux 系统下的一个著名的同步工具,能够根据我们的设置,定时实现两个目录之间的同步,与 rsnapshot 一样,这两个目录可以是本地的,也可以是异地的,因此非常强大。

通过我的介绍,你应该有所认识了吧,下面是教程:

其实这样的教程网上一搜索“rsnapshot”马上就可以得到,而且大家都差不多,这个是根据官方的介绍之翻译文章,所以大家基本一样,我也是从这里学过来的。我这里也暂时不写这样的文章了,基础部分请看这里(后期我看情况要不要写到我的网站上来,我这里主要说说我的体验)
https://www.howtoing.com/rsnapshot-a-file-system-backup-utility-for-linux/

针对上面链接中的教程,我说这么几点:
1、文章中提到的使用 vi 来编辑配置文件 rsnapshot.conf,如果你在 windows 下操作的,我建议你使用 winscp 下载下来,使用专门的文字编辑工具(例如 EditPlus)来编辑,然后再传上去,这样比较简单方便。建议把原来默认的全删除,然后把教程中的复制过来修改;

2、里面有提到设置一些基本命令(例如:cmd_rsync、cmd_rm)的路径,需要注意,这些可能是本软件要用到的,可以使用 which rsync 、which rm 这样的方式来查询你的,例如我群晖上的 rsync 默认路径就改变了,需要根据实际情况修改(后面运行过程中出错再来改吧)。

3、备份路径的设置,例如 backup /etc/ localhost/,表示将 /etc/ 目录下的东西备份到开始设置的备份保存路径下的 localhost 文件夹下,而且可能带有 /etc/ 的全路径,这就显得太长了,很不舒服,我是这样用的。而且需要注意的是,下面配置里的路径不能带有中文。

backup	/etc/./	./

这样 etc 目录下的内容,就直接放到保存路径下的某个子目录下了,大家要注意的是,上面的 /etc/ localhost/ 之间,要用一个TAB键打出来,不能是空格,否则要出错。

4、设置你要保留多少份增量备份档案,里面有每小时(hourly),每天(daily)的项,后面跟的数字,就是保留以他们开头的备份多少份,所以我直接设置成了 bak,后面跟的是 10000,也是可以的。而且,我在群晖里面设置时,没有原文中的格式(interval hourly 6),而是这样的(retain alpha 6);

5、那些备份档案全是以这样的目录(hourly.0、hourly.1、hourly.2、... ...)保存的,我觉得不方便,建议备份完成以后,将文件夹名修改成时间的格式,这样就可以永久保存,也不受上面设置的3个、6个保留档案的限制了(当然你可以保留一部分,让它自动的将近期的工作轮询保存并修改,我这里说的是归档档案,一般不需要删除的,反正占用空间也不多)。我想自动让它给我完成,写个小程序来实现如下,我的备份目的地是 /volume1/bak/Snapshots,备份任务是 bak(retain bak 10000),将它保存成一个小程序,加入计划任务即可。

#!/bin/sh

ls /volume1/bak/Snapshots > bak0;
mv -f /volume1/bak/Snapshots/$(sed -n '$p' bak0) /volume1/bak/Snapshots/bak.0; #sed获取最后一行
date "+%Y%m%d-%H%M" > number;
rsnapshot bak;
mv -f /volume1/bak/Snapshots/bak.1 /volume1/bak/Snapshots/$(sed -n '$p' bak0);
mv -f /volume1/bak/Snapshots/bak.0 /volume1/bak/Snapshots/$(cat number);
mv -f number /volume1/bak/Snapshots/$(cat number);
rm -rf bak0; # 再把这个编号扔进对应目录

这样今后在备份目的地目录里,就会生成很多这样的档案文件,全部是与时间相关联的,比较清楚

20191001-0900
20191002-0900
20191003-0900
20191004-0900
20191005-0900
20191006-0900
... ...

下图的 Timebackup(感觉与 Rsnapshot 基本上是一样的东西,群晖专用,有管理页面而已) 增量备份档案,是从另外一块硬盘上的真实增量备份档案逐条翻录到这块硬盘上来的(用了几天),而 Rsnapshot 档案是对上面的第一次翻录进行的第二次翻录(借助小程序,用了一整天)。从图中可以看出来,增量很小吧(源文件夹 \pub\ 下现在有 20 万个文件,共 292 GB大小,中途经过 3~4 次折腾,改变目录结构、名称、分类等等,如果不改变也许增量空间会小的多)。如果没有修改,现在对源目录进行一次 Rsnapshot 增量备份(快照),需要 5~6 分钟,空间占用 100 MB;而在群晖管理页面上,使用 file station 全新复制一份新的档案,需要 6~8 个小时,空间占用 292 GB。


100%(2)

0%(0)
发表评论?

2 条评论。

  1. syncthing和这个比怎么样。感觉syncthing也是增量的吧

发表评论

*