posts - 23, comments - 0, trackbacks - 0, articles - 3
  语源科技BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

其于window系统的Rsync同步实战

Posted on 2008-08-18 17:04 beauty9235 阅读(495) 评论(0)  编辑  收藏

作者: beauty9235  链接:http://beauty9235.javaeye.com/blog/229634  发表时间: 2008年06月23日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

 

其于window系统的同步实战

1. 远程数据同步工具Rsync介绍

1.1 软件简介

 

Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由 rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据;也可以多个Rsync server备份一个client的数据。

 

  Rsync可以搭配rshssh甚至使用daemon模式。Rsync server会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

 

  Rsync支持大多数的类Unix系统,无论是LinuxSolaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsyncSync2NAS

 

  Rsync的基本特点如下:

 

  1.可以镜像保存整个目录树和文件系统;

 

  2.可以很容易做到保持原来文件的权限、时间、软硬链接等;

 

  3.无须特殊权限即可安装;

 

  4.优化的流程,文件传输效率高;

 

  5.可以使用rcpssh等方式来传输文件,当然也可以通过直接的socket连接;

 

6.支持匿名传输。

 

 

 

1.2 核心算法

 

  假定在名为αβ的两台计算机之间同步相似的文件AB,其中α对文件A拥有访问权,β对文件B拥有访问权。并且假定主机αβ之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成:

 

  1.β将文件B分割成一组不重叠的固定大小为S字节的数据块。最后一块可能会比S 小。

 

  2.β对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的MD4强校验。

 

  3.β将这些校验结果发给α

 

  4.α通过搜索文件A的所有大小为S的数据块(偏移量可以任选,不一定非要是S的倍数),来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。

 

  5.α