2008年3月20日星期四

应用rsync轻松备份数据

正如业界专家所分析和预测的一样,Linux正在和微软、UNIX争夺服务器市场份额,尽管UNIX系统一直在做服务器方面有绝对的优势。如今,已成三足鼎立之势,Linux逐渐发展成为第三大服务器操作系统,也成为微软在低端服务器市场的主要竞争者。其中的原因之一就是Linux的安全性能,另外一个就是费用问题。如果需要执行自动备份操作或部署安全策略,无论是对一个单一的工作站还是对一个网络内所有的服务器和工作站,rsync工具绝对是一个很好的选择。它能够及时报告所有意外事件的发生,尤其是把它和其他合适的工具配合使用的时候,可以极大地提高安全防护性能。

文件拷备功能
rsync被设计成一个简单的文件拷备工具,但不同于其他拷备工具,如cp和rcp,rsync在功能上比他们更胜一筹。因为它具备校验比较功能,可以决定哪个文件需要被拷备,哪个文件已经存在目标机上而不需要拷备。例如,如果需要将位于foo计算机上一个包含30个文件的目录拷备到bar机上时,如果选用cp,则拷备的仅仅只是文件,并且覆盖bar机器上具有相同文件名的文件,可能某些文件已经从 foo拷备到bar上了。但是,如果选用的是rsync,它将快速地比较foo和bar上相同的目录,查看两者之间的差别所在,最后将那些foo上存在而bar上不存在的文件拷备到bar上,不用拷备重复文件。这将极大地节省在文件拷备上所花费的总时间,尤其是需要将某台机器上的数据备份到另外一台机器上的时候。rsync工具使用起来非常简单、方便,若使用得当的话还可以增强操作的安全性。此外,它还可以被用作一款安全检测工具,不需要任何其他软件的支持,就可以完成文件系统的完整性审计。

数据备份功能
数据安全性的实施一般需要备份关键数据。可以通过效仿小生意的经营方法来解决,比如:到办公室的每一台工作站上,将一些重要的文件刻录到一张光盘上,这比在网络上运行一些自动备份软件要快一些。最有效的方式当然是使用目前推出的低成本并带有高速硬盘的备份服务器,通过网络定期地将需要备份的文件复制到备份服务器的硬盘上。对于那些办公任务比较大的单位来说,可以调用出一台老式的计算机来扮演这个备份服务器的角色,它的工作极为简单,在没有人使用网络的时间段,如半夜或周末,拷备重要的数据文件,完成备份。rsync在计算机之间通过网络拷备文件是一个非常简单的过程。如果需要拷备的文件在一个Linux系统上,则还有一个极为简单的方法,只需要在目标Linux系统上键入如下命令即可:

rsync localdir host:remotedir

上述命令行是使用rsync默认的操作,在本地系统上(localdir)指定希望被拷备的目录,同时指定远程系统的主机名(host)和用来存放被拷备文件的目录(remotedir)。例如,如果想将位于foo系统上/home/baz目录拷备到主机bar的/home/backup/qux目录中,在主机 foo上,则需要键入的命令为:

rsync /home/baz bar:/home/backup/qux

数据备份完成后该操作会自行终止。

但如果仅有上述操作的话,在安全性方面还是没有保障。同时,上述操作也不能拷备链接文件,不能保存权限、用户与群之间的所有关系以及新建的时间。对于此,最好是在上述命令的基础上再添加一个“-a”选项(对于文件)和“-e”选项,指定使用远程的shell程序,以保障安全。此时,远端的 shell将使用一个加密协议,比如ssh,以便远程的shell可以使用-e ssh格式。这样,上述rsync命令就有了ssh加密协议的保护,具体形式如下:

rsync -a -e ssh localdir host:remotedir

如果想了解整个文件拷备过程中所发生的一切,可以使用-v和-progress选项。-v选项表示打印出详细的操作过程。rsync默认的操作是单纯地拷备文件,不打印任何东西,尽量不打扰用户,只是简单而快速地完成任务。若只使用一次,-v选项将会报告所有被拷备的文件,并在最后给出总量。若使用两次-v选项,即在命令中使用-vv的话,rsync将不仅报告所有被拷备的文件,还会报告那些勿需拷备的文件,并在最后给出更详细的信息。-progress选项的任务则主要是显示当前的拷备进度,包括当前文件的大小,已完成的百分比,当前的传输速度,剩余时间估计等等。如果要写一条使用复选项模式和ssh隧道协议的命令,同时还要求有进度指示器的话,则可采用如下形式:

rsync -avv -e ssh -progress localdir host:remotedir

如果在拷备文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上删除已拷备的部分文件。如果想在下次拷备时续传文件,不需要重新拷备所有文件的话,可以使用-partial选项阻止rsync在传输中断时删除已拷备的部分。如果希望同时使用-partial和-progress选项的功能,则可以使用-P选项,这是rsync提供的一个更便捷的选项,可以代替上述两者。因此,如果想使用复选项模式的文件拷备,并关闭删除选项,同时要求有进度指示器和ssh隧道协议的保护,则可以采用如下命令:

rsync -avvP -e ssh localdir host:remotedir

如果希望系统按照预定的调度计划自行处理,可以简单地在后台守护进程任务中添加rsync命令。如:要添加rsync命令到/etc/crontab文件中,方法如下所示:

30 4 * * * user rsync -aP -e ssh localdir host:remotedir

完整性检测
通常,文件系统的完整性检查是通过操作特定的安全工具来完成的,比如tripwire。这类工具的操作十分彻底,功能非常强大,并提供一系列灵活的策略来帮助系统管理员完成文件系统的完整性检测。但是,对系统管理员来说,可能由于诸多原因而倾向于采用另外的方法来完成完整性检测。rsync工具就具备这个功能。它所具有的校验功能能够将原始文件和拷备后的文件进行对比,可以判断并检查出哪些文件被改变,还可以判断这些文件的更改操作是否合法,是否具备足够的授权。对文件系统的完整性检测来说,rsync所做的第一件事情是为文件系统创建一份快照。这必须在检查文件系统的完整性之前完成,因为必须有一份完好无缺的拷备用于检查文件系统是否正确。

完成上述操作之后,在命令行简单地运行一条rsync复制命令,如拷备一个rsync的二进制文件版本(可能位于/usr/bin/rsync)到一个可写的媒介上,如光盘上。当使用rsync时,还需要指定rsync二进制文件位于哪个媒介上,而不是指向计算机上的某个版本。如CD安装/mnt/cdrom ,运行如下命令,可从一台计算机上复制文件到另外一台主机上:

rsync -av --rsync-path=/mnt/cdrom/rsync -e ssh host:/ localdir

上述命令表示,从远端主机上复制整个文件系统(期望被检查的文件系统)到运行rsync所在机器的一个本地文件目录中,一旦拥有了文件系统的快照,就可以使用如下的命令来检查文件系统的完整性了:

rsync -avn --rsync-path=/mnt/cdrom/rsync -e ssh host:/ localdir

前面提到的-n选项是用来确保没有任何文件被拷备。而在rsync工具中则有所不同,它仅报告拷备之前和拷备之后的差别所在。如果不希望两者间出现差别,就应该对它们进行仔细检查,确保没有发生未授权的更改。 bin/ls、/bin/bash和/bin/sshd等文件若发生改变的话是需要特别留意一下的,如果它们本来是不应该被更改但却被改动了,这可能表示系统已遭受了某种安全威胁。但是,如果系统自动更新程序正在运行,这些文件被更新进程所改变就是很正常的了。因此,最好让更新程序做好日志记录,将那些更新进程替换过的包或文件都做好标记,再和rsync的完整性检测报告中列出来的所有被更改过的文件进行对照,这样就可以检测出哪些文件已经被非法更改了。

系统备份与完整性检查相结合
可以将自动备份和完整性检查合并起来。例如,用自动备份工具备份整个系统,在备份之前创建一个后台守护进程,用于完成完整性检查,并将输出结果重定向到一个日志文件中。在这种情况下,如果需要备份整个文件系统时,一般只需要检测出那些未曾被更改的部分文件。例如,假设需要将系统文件备份到root目录,但完整性检测的审计过程却遗漏了一些目录,而这些目录中的内容发生了常规变化,如 /home和/var等内容都发生了变化。在这种情况下,如果文件系统的审计程序总是过于“热心”地检查每一个文件的话,结果往往会导致系统备份的效率大大降低。

如果想象力丰富,思维活跃的话,可以尝试去写一个脚本程序,在后台守护进程上运行。在第一次进行完整性检查的过程中,只有当完整性检测没有发现任何错误时,才允许系统接着运行备份程序。然后,再亲自对完整性检查产生的日志文件进行仔细地检查,如果仍然没有发现任何错误,就可以选择一个比较空闲的时间段来运行系统备份程序。一般来说,最好是在完成完整性检测过程之后,且自动审计程序没有发现任何被改动的文件时,再来运行系统备份程序。

rsync实现文件的自动备份是相当简单的,这也正是设计rsync工具的动机和目标。不过,除此之外,rsync也有很多其他的功能。比如,可以用rsync完成文件系统的完整性检测,也是Linux提供的工具的灵活性的一个例证。Linux提供了很多小工具,每个工具都可以非常出色的完成某一类操作。这也正是与那些大程序的区别所在,一个大程序总是试图解决所有的问题,但最后的结果往往并不理想。此外,这些小工具使用起来十分灵活,用户可以按照自己的需要将它们组合起来完成一些比较大的复杂的任务。比如rsync借助SSH就可以用来加密和压缩经由网络所传输的数据,只需要键入简单的命令行就可以大大地提高数据安全性和系统安全性。总之,rsync工具简单易用,值得推荐。在那些富有经验的系统管理员眼中,rsync是一套多功能的、高效的安全防护工具。

源文地址: http://www.cweek.com.cn/cweek/network/technology/story/0,3800084341,39450126,00.htm

没有评论:

发表评论