如何使用rsync来备份Linux系统

介绍

这篇文章主要介绍”如何使用rsync来备份Linux系统”,在日常操作中,相信很多人在如何使用rsync来备份Linux系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“如何使用rsync来备份Linux系统”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

<强> rsync命令

安德鲁Tridgell和保罗Mackerras编写了rsync, * * *发布于1996年。它的目标是向另一台电脑同步文件。你注意到了他们为什么取这个名字了吗(远程同步)?它是大多数发行版都提供的开源软件。

rsync能够用于同步两个目录或目录树,无论它们是在同一个计算机上还是不同的计算机上,而且不仅如此,它还能做到更多。它创建或者更新的目录与源目录完全一样。新的目录不是以焦油或邮政等打包存储,而是普通的目录和文件,常见的Linux工具都能轻松访问,而这正是我所需要的。

rsync的最重要的特性之一是它处理源目录被修改的已有文件的方式。它使用分块校验来比较源文件和目标文件,而不是从源把整个文件复制过去。如果两个文件所有块的校验和都相同,那么就不用传输数据,否则只有被改变的块被传输。这样节约了远程同步消耗的大量时间和带宽。比如,我* * *次使用rsync脚本来把我所有的主机备份到一个外接的大型usb硬盘上需要三个小时,因为所有的数据都需要传输过去。而接下来的备份需要的时间就只是3到8分钟,这取决于上次备份以来创建和改变了多少文件。我使用时间命令来记录实际花费的时间。昨天晚上,我只花了三分钟来从六个远程系统和本地工作站备份大概750 Gb的数据。实际上只有在白天改变的几百Mb数据需要备份。

下面的命令可以用来同步两个目录及其任意子目录的内容。也就是说,在新目录的内容和源目录同步完之后,它们的内容完全一样。

 rsync  -aH  sourcedir  targetdir 

——选项表示归档模式,它会保持权限,所有关系和符号(软)链接。h选项用来保持硬链接。注意源目录和目标目录都可以在远程主机上。

假设昨天我们使用rsync同步了两个目录。今天我们想再同步一次,但是我们从源目录删除了一些文件.rsync默认只复制新的和改变过的文件到新目录里,而不去改变新目录里被我们删除的文件,但是如果你想让那些在源目录里被删除的文件在新目录里也被删除,那么你可以加上——删除选项来删除。

另一个有趣的选项,也是我个人最喜欢的选项是link-dest,因为它极大地增加了rsync的能力和灵活性。——link-dest使每日备份只花费很少的额外空间和很短的时间。

用这个选项指定前一天的备份目录,以及今天的备份目录,然后rsync会创建今天的新备份目录,并将昨天备份目录里的每一个文件在今天的备份目录中创建硬链接。现在我们在今天的备份目录中有一大堆指向昨天备份的硬链接。文件没有被重复创建,而是创建了一些硬链接。对于硬链接,在维基百科中有非常详细的描述。而在用昨天的备份目录文件的硬链接创建了今天的备份之后,rsync和平常一样进行备份,如果在文件中检测到了变化,就不会做硬链接,而是从昨天的备份目录里复制一个文件的副本,再把源文件中变化的部分复制过去。(LCTT译注:此处疑似原文表述不清,参见发电机。c的try_dests_reg函数,先根据match_level选择复制或者硬链接,而不是创建硬链接后再判断match_level)

现在我们的命令类似于下面这样。

 rsync  -aH ——delete ——link-dest=yesterdaystargetdir  sourcedir  todaystargetdir 

你也可能想要排除一些不想要备份的目录或者文件。那么就可以使用,排除选项。用这个选项加上你想排除文件或目录的模式。你可以用下面的新命令来排除浏览器的缓存。

 rsync  -aH ——delete ——exclude  Cache ——link-dest=yesterdaystargetdir  sourcedir  todaystargetdir 

注意:你想排除的每一个文件的模式前面都分别需要加上——排除选项。

rsync可以同步远程主机,无论是作为同步源头还是目标。再举一个例子,我们假设想要把名为remote1的远程主机的目录同步到本地。因为ssh作为与远程主机交换数据的默认协议,我一直使用ssh选项。现在命令类似于下面这样。

 rsync  -aH  -e  ssh ——delete ——exclude  Cache ——link-dest=yesterdaystargetdir  remote1: sourcedir  todaystargetdir 

这就是我的rsync备份命令的最终版本。

如何使用rsync来备份Linux系统