折腾Nas-7

备份

Posted by swint 2019-04-30 database cloud tag Nas tag rsync

其实备份的功能前面的syncthing就可以实现了,但是因为自己基本不用,所以干脆在自己电脑上关闭了syncthing。没折腾Nas之前,想用R6800上ReadySHARE代替一下。使用unison来同步,效果还好,但是偶尔摸了一下挂在R6800上面的u盘,好热,闻起来似乎有点糊味了,不敢继续用了。在看一些nas介绍的时候,好多人说到mac上面的timemachine,估计就像emacs上面的git-timemachine一样,可以回溯到之前任何时间点的版本,确实很好用。在github上面搜索rsync,star最多的项目是rsync-time-backup,大致看了一下似乎可以用rsync实现这样的功能。

安装

这个项目大致就是rsync的包装,直接clone下来:

git clone https://github.com/laurent22/rsync-time-backup

直接运行rsync_tmbackup.sh就行,github主页上面有详细的说明。

同步方式

因为rsync本身既支持本地,又支持远端的同步,所以这个脚本也是支持的。那么就有两种方式:

  • 远端nfs挂载到本地,备份到挂载点。
# 使用NFS同步,速度慢,并且若服务端挂起,会导致无限挂载请求。
if [[ -d /mnt/storage-share/backup ]]; then
rsync_tmbackup.sh /home/xxx /mnt/storage-share/backup/xxx;
fi

这种方式的问题就是,备份速度很慢,尤其当nfs挂载使用sync选项时。在网上查了一下有很多相关的讨论,基本上的观点就是nfs本身是为局域网分享设计的,传输速度不佳。

  • 直接通过ssh协议备份到远端。
ping -c 1 192.168.1.105 &>/dev/null
if [ $? -eq 0 ]; then
rsync_tmbackup.sh /home/xxx swint@IP:/mnt/storage/share/backup/xxx;
fi

因为rsync是专为传输文件设计的,速度很快,但服务端进程占用很多资源。另外,之前使用rsync的时候都加compress选项,毕竟压缩之后再传输,传输大小会小很多。直到用自己的小笔记本传输文件时发现,明明网卡支持千兆,可是传输速度只有十兆出头,就是因为压缩数据导致的。其实,只要网速不太差,都不用加这个选项,尤其是局域网内部。

问题

rsync-time-backup这个脚本的有一个明显的bug,也是issues里面很多人讨论的问题。虽然设计时支持autoexpire,就是超过一段时间后,之前的备份会自动删除以节约空间,例如超过24小时,每天只保存一个备份。但是实现的有问题,实测下来,用cron每隔一小时备份一次,但是超过24小时的备份全都被删除了。这个项目的作者自己很忙,但又是一个负责的人,有几个pull request,但作者都不接受。我看他的意思是,尽管现在有明显的bug,但运行稳定,如果盲目引入未经验证的pull request,很可能破坏很多人的数据。只有经过长期的检验,他才会接受。暂时先这么用着吧,看看哪天能够解决这个问题吧。

0 Comments.

Please log in to leave a comment.