rsync

rsync
rsync is a software application and network protocol for Unix-like and Windows systems which synchronizes files and directories from one location to another while minimizing data transfer using delta encoding when appropriate.

rsync的同步算法
问题:文件A、B分别位于机器1、2上,如何使用最少的网络传输量来同步文件1和2?
1. 机器2将文件B按固定大小S分割成一组不重叠的数据块,最后一块可能会比S小。每块都计算出一个32位的滚动哈希值和128位的MD4(或MD5)值
2. 机器2将这些校验结果发给机器1
3. 机器1通过搜索文件A的所有大小为S的数据块(偏移量可以任选,不一定非要是S的倍数),首先查看是否是否命中A给的某个哈希值,若一致,则表明B文件中得这块内容和对应的A的那块内容可能是一致的,但是32位的哈希值强度不够,还需要计算MD4(或MD5)值,若还是一致,则确定是一致内容,机器2发送给1匹配的段号,若使不匹配的内容,则发送给机器1原始内容
4. 机器1得到机器2给的匹配信息,构造一个与B一致的复本:若是匹配的块,则拷贝原A文件中对应的块,若是不匹配内容则追加之。

滚动哈希值基于Adler-32算法,改算法在zlib中也得到使用。为了计算第2~K+1字节的哈希可以根据1~K字节哈希和1、K+1字节的内容快速计算得到。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值