Rsync –link-dest节省空间

我正在尝试使用rsync和“–link-dest =”在服务器上创build备份副本(Debian Wheezy,LVM,RAID 1),目标是使用硬链接来节省空间。

不像什么可能是“正常”的用例,我想每天从一个Windows客户端备份到服务器上的一个名为“1”的文件夹(这部分工作,虽然我不使用rsync在这里做备份) ,然后closures“1”以创build30天的增量更改。 所以,“1”随客户端的每一天的备份而改变,但是由其创build的副本将包含较旧的文件版本,30天价值。

从http://blog.interlinked.org/tutorials/rsync_time_machine.html的一篇文章中可以看出如何使用rsync来模拟苹果的Time Machine,我有以下代码(目标path的“15/16”部分代表备份的date/时间):

date=`date "+%Y-%m-%dT%H:%M:%S"` $UserNameVar=client8 rsync -aP --log-file=/home/User1/Desktop/rsync.log --link-dest=/home/$UserNameVar/share/Backups/1/current /home/$UserNameVar/share/Backups/1 /home/$UserNameVar/share/Backups/15/16/back-$date rm -f /home/$UserNameVar/share/Backups/1/current ln -s back-$date /home/$UserNameVar/share/Backups/1/current 

代码运行,备份发生,最后一次备份和“当前”之间的链接被创build,后续备份速度非常快,但我可以告诉,备份与原始备份消耗相同的空间。

方法是否有缺陷,或者我的代码中有什么错误? 还是我需要一种不同的方式来计算实际的可用空间?

谢谢

有几种方法可以检测--link-dest是否像您期望的那样工作。

一种方法是使用find命令查找硬链接数大于1的文件 。就像find . -type f -links +1 find . -type f -links +1

du命令通常也会过滤一次只统计一个文件,即使有很多硬链接。

因此,如果您要使用du从两个备份上方的文件夹中获取使用量,则应该看到一个目录占用大部分存储空间。

如果你没有看到这些迹象,那么你的文件没有被链接。 这可能会发生,因为rsync没有感觉到这些相同的文件。 由于某些原因,文件或它们的一些属性是不同的。

顺便说一下,我是使用dirvish而不是试图推出自己的脚本的忠实粉丝。 它基本上是在link-dest模式下运行rsync的工具。

你看过rdiff备份吗?

它创build了保持一定天数的循环备份,并使用rsync作为传输方法。 它基本上做你想要自动脚本的一切,没有额外的努力。 它会为每个备份创build差异,所以如果没有更改,则不会使用额外的磁盘空间。

rdiff-backup将一个目录备份到另一个目录,可能通过networking。 目标目录结束了源目录的副本,但额外的反向差异存储在目标目录的特殊子目录中,因此您仍然可以恢复前一段时间丢失的文件。 这个想法是结合镜像和增量备份的最佳function。 rdiff-backup还保留子目录,硬链接,开发文件,权限,uid / gid所有权,修改时间,扩展属性,acls和资源分支。 而且,rdiff-backup可以通过pipe道以带宽有效的方式运行,比如rsync。 因此,您可以使用rdiff-backup和ssh安全地将硬盘驱动器备份到远程位置,并且只会传输差异。 最后,rdiff-backup很容易使用,并且设置有默认值。

我将其广泛用于与backupninja结合的服务器备份。

我已经与http://stromberg.dnsalias.org/~strombrg/Backup.remote.html#rsync祝你好运 – 它甚至能够备份带有失败的flakeynetworking驱动程序的主机。 它存储一些重复的文件,并不压缩它们,但速度很快。

它保留了任意数量的备份,并会很好地恢复以前的中断备份。

这实际上只是一些rsync –link-dest与一些mving的包装。