注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

rsync  

2010-02-04 14:45:35|  分类: Linux/Unix |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

rsync

rsync是个给Unix系统用的应用软件,它使从一个地方到另一个地方的文件目录同步,并同时恰当的利用差分编码以减少数据传输。rsync的一个大部分类似程序或协议中所未见重要特性是镜像发生在每个方向只需要一次传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。

在常驻模式(daemon mode),rsync监听默认TCP端口873,以本地rsync传输协议或者通过远程shellRSH或者SSH伺服文件。在后面的SSH情况下,rsync用户端运行程序必须安装在本地和远程机器上。

rsync是自由软件,以GNU通用公共许可证发行。

算法


rsync公用程序利用由澳大利亚计算机程序师安德鲁·垂鸠(Andrew Tridgell)发明的算法,在当接受端计算机已经有相同结构(例如文件)但不同版本时,有效的将结构传输过通信连接。

接受端将文件拷贝打散成固定大小为 S 的不重叠片段,并对每个片段计算两个校验和MD4散列函数与一个较弱的轮替校验和(rolling checksum)。它将这些校验和送给发送者。通信协议版本30(与 rsync 版本 3.0.0一并发行)现在使用MD5散列函数以替代MD4。[1]

发送者对位于其版本的文件中每个大小为 S 的片段计算轮替校验和,即使是重叠的片段。这可被有效的计算通过特别知识产权的轮替校验和算法:如果 nn + S ? 1 的轮替校验和是 R,从位 n + 1 到 n + S 的轮替校验和可从 R,位 n,以及位 n + S 计算出而不需要真正去检验中间的位。因此,如果位 1 到 25 的轮替校验和已被算出,那计算位 2 到 26 的轮替校验和可完全依靠之前的校验和与位 1 与位 26 算出。

rsync使用的轮替校验和是根据马克艾德勒(Mark Adler)的alder-32校验和算法。该算法也被用于zlib,而它本身也基于弗莱彻校验和(Fletcher's checksum)算法。

发送者其后以接收者送来的一组轮替校验和比较它自己的轮替校验和以决定是否任何匹配存在。如果是的话,它便通过计算匹配区块的 MD4 校验和与接受端送来的 MD4 校验和比较来验证匹配。

发送者稍后传送给接收者不与接收者方任何区块匹配的文件的那些部分,以及如何合并这些区块到接收者版本的组装指令。在实际上,这产生了与发送者端文件一模一样的拷贝。然而,在原则上是可能接收者的拷贝在这一点上不同:这可能发生在当两个文件有不同的区块但有着相同的MD4散列函数与轮替校验和;这种事情发生的机率在现实上极端罕见。

如果发送者与接收者文件版本有许多区段相同,该公用程序只需传送相对小部分的数据以将文件同步。

在rsync算法构成rsync应用程序内核并优化两台计算机间TCP/IP的传输同时,rsync应用程序也支持其他种显著增进文件传输或备份的重要功能。他们包括在发送端与接收端个别利用zlib进行区块区块间压缩解压缩,以及支持通信协议如ssh。该协议让加密传输兼具压缩与效率,通过rsync算法产生的差分数据变得可能。除ssh以外,stunnel亦可被利用于创造加密通道以保全被传输的数据。

使用


 

rsync 是撰写来取代rcpscp[2]。rsync最早期程序的其中之一是用来实现通过rsync/ssh与标准Unix帐号,从多重Unix客户端镜像或者备份到中央Unix服务器。与如cron类似的调度应用程序配合,任何人皆可调度介于多台计算机与中央服务器间自动加密过、基于rsync的镜像备份。

变种


一个叫做rdiff的公用程序利用rsync的算法产生文件A与文件B间不同的差分文件(与公用程序diff类似,不过不同的差分文件格式)。差分文件可稍后被套用到文件A,转成文件B(类似patch公用程序)。

不像diff,产生差分文件的过程有两步:首先产生文件A的签名档,然后这个(相对较小)的签名档与文件B被用来产生差分档。又与diff相异的是,rdiff可适用于二进制文件

利用rdiff,自由软件作者们写了一个叫做rdiff-backup的公用程序,它可以跨过网络维护位于另一台服务器某个文件或者目录的备份镜像。rdiff-backup存储备份以及递增的rdiff差分档。这种方式让回溯到任何备份点成为可能。

duplicity是rdiff-backup的一个变种,它利用单一存储服务(像Amazon S3)达成不需要与存储服务器合作的备份。它通过产生预先产生每个区块的散列函数,将它们加密,并送到服务器存储,然后当进行递增备份时取回。剩下的数据为满足保全需求也被加密存储。

 

  评论这张
 
阅读(873)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016