时间:2021-04-05 10:09:38 | 栏目:Nginx | 点击:次
rsync它原本是在Linux系统下面的一个文件同步协议,随着技术的发展,它也有其它版本的,如Windows和AIX、HPUX下面都有相应的版本可以支持的。Rsync这个同步工具的好处在于完全命令行下面的操作,有详细的日志文件,同时也能支持多种不同情况下的更新,例如备份式更新等,还有一个非常好的地方是,它和服务器之间可以互相同步,即可以从服务器上更新文件下来,也可以把本地的文件提交到服务器上面去。只要你配置的参数是正确的,就能完成这样的工作。
而且这个工具占用的系统资源也比较小。另外我们也试过,用这个工具和xcopy,SecondCopy相比,优点实在是太多了,特别是在文件数量和大小非常庞大,优势更明显,200G以上的数据,十几万个文件,xcopy只要有一个出错,就麻烦了,要么中断,要么你得重新开始copy,SecondCopy这个工具在copy 200G这样的大数据量的文件时,它走不下去了,反正停在那里总是报错,而rsycn则完全没有这样的毛病。200G以上的数据,十几万个文件,我们用 Rsync可以成功的copy过去。
Rsync有一个比较慢的地方是,它在同步时,会根据本地的目录中的文件同服务器上的文件进行对比,这样比较之后,它只更新那里不一样的文件,相同的文件它会直接跳过去的,如果要同步的文件数量非常庞大时,这个比较过程就非常慢,需要等待很长时间。
Rsync的参数说明这里就不说了,大家google一下 rsycn中文手册 这个关键字,网上有很多说明的,这里只讲一下在Windows下面的安装和使用过程。
在 Windows下面,这个工具也有安装文件,http://rsync.samba.org/download.html,网上有下载的,在 Windows下面建议大家安装这个,AIX和HPUX系统下面,如果大家需要使用的话,需要自己去下载源码进行安装。在Windows下面安装后,它增加了一个手工启动后台服务RsyncServer ,在默认情况下,安装后这个服务是没有启动的,所以在第一次安装后,你要手工把这个服务启动起来,并且设置成随操作系统启动而自动启动。
安装完之后的第二步就是配置它的同步目录了,在安装目录下面有一个rsyncd.conf这样的文件,用文本编辑器打开,可以在里面看到以下的内容:
#Module definitions
#Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/c/work
read only = false
transfer logging = yes
在# 之前那几行可以不管,最下面的那几行才是我们最关心的,需要注意的是,Rsync这个工具是从Linux下发展下来的,所以它的路径和Windows下面的路径有点不一样,需要转换一下,如c:\work这个目录,在Rsync中的目录路径应该写成 /cygdrive/c/work 这样,这种格式里面没有那个冒号,用得全部都是反斜杠,在驱动器的盘符前面要加上/cygdrive/。 其它的路径参照这个格式改一下就可以了。
[test] 这一行是表示你设置的某个同步目录的模块名称,你可以把它理解成一个Rsync中的别名,这样可能会容易理解一些,要注意的是,这个名称是区分大小写的,而且不能重复。
path = /cygdrive/c/work 这一行是表示你设置的同步目录的物理文件路径,这个格式需要注意,不要写错了
read only = false 表示设置的这个同步模块只能读,不能通过rsync的客户端向这里写文件
transfer logging = yes 表示在同步的时候将输出的日志按预定的格式进行格式化,具体的格式和日志你可以查看安装目录下面的 rsyncd.log 这个文件。这个文件也需要注意一下,就是长时间的同步操作后,这个日志文件可能会很大,所以你最好每隔一段时间就手工删除一下。当有人要用rsync客户端时行同步时,这个日志文件你是删除不掉的,只有在没有人使用的时候才可以删除掉的。
这样服务端的就安装成功了,然后就可以用Rsycn 的客户端去连接服务器进行同步操作了。Linux平台不需要你安装,系统默认就安装了,Windows下面你也先要安装一下客户端,客户端的安装包安装过一次之后,你可以把那些己经安装好的文件全部copy到其它要用的机器上,客户端可以直接copy过去使用的。copy到任意目录下面,然后启动一个 cmd窗口,切换到rsync.exe所在的目录,然后输出以下命令:
rsycn -avrDztopg --force --delete 192.168.100.10::test/abc/ /cygdrive/c/abc
这条命令的意思是根据192.168.100.10这台机器上的c:\work\abc目录下面的所有内容同步到本地的c:\abc目录中,如果发现在本地的c:\abc中存在的文件而在服务器上没有的,则强制把本地这些多余的文件删除掉,其它的参数大家可以看看那个中文帮助手册,里面有详细的说明。