当前位置: 首页 > article >正文

rsync算法原理

1. 简介

rsync是一种文件同步的工具,也是一种算法。

2. 算法原理

背景:计算机 α \alpha α 上有文件 a, 计算机 β \beta β上有文件b。要对这两个文件进行同步。

  1. β \beta β将文件b分成大小为S字节的若干块,最后一份可能不足S字节
  2. 对于b中的每一块, β \beta β计算两个哈希值;一个32位的弱滚动哈希,一个128位的MD5强哈希。
  3. β \beta β将这些哈希值发给 α \alpha α
  4. α \alpha α计算每S弱哈希值,并在 β \beta β传来的表中进寻找这个弱哈希值。若找到了再计算强哈希值进行比较,强哈希值相同,右移S字节;否则右移一个字节计算新的弱哈希值。弱哈希值比较失败也是右移一个字节,计算新的弱哈希值。
  5. 这样我们就得到了一个列表, α \alpha α中有 β \beta β中也有的, β \beta β中有 α \alpha α中没有的。这样一来,两个文件就能进行同步了。

查找算法图见知乎
在这里插入图片描述

3. 参考

zhihu
rsyn-algorithm
rsync
geek-for-geeks-rsync


http://www.kler.cn/news/364522.html

相关文章:

  • 在xml 中 不等式 做转义处理的问题
  • ubuntu 用 ss-tproxy的内置 DNS 前挂上 AdGuardHome,AdGuardHome实现的DHCP和DNS 去广告
  • COVON全意卫生巾,轻薄透气,绵柔速干,马来西亚热销中
  • TCP全连接队列与 tcpdump 抓包
  • 形式架构定义语言(ADL)
  • U9的插件开发之BE插件(1)
  • Vue3 + Element Plus 封装文本超出长度显示省略号,鼠标移上悬浮展示全部内容的组件
  • 关于建造者模式(Builder Pattern)
  • 写出Windows操作系统内核的程序员,70多岁,还去办公室敲代码
  • Scala trait
  • 912.排序数组(计数排序)
  • QML列表视图 ListView的使用
  • Jenkins + GitLab + Docker实现自动化部署(Java项目)
  • 深入了解 Pandas 中的数据:Series 和 DataFrame 的使用指南
  • 借助栈逆置单链表
  • 基于YOLOv8深度学习的高密度人脸智能检测与统计系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
  • 【golang】学习文档整理
  • OpenFace安装教程及踩坑记录 (Ubuntu20.04—2024.10.24)
  • ElasticSearch全文检索和倒排索引
  • 杂项笔记
  • 100种算法【Python版】第8篇——群体智能优化算法之人工蜂群算法
  • Docker容器的基础镜像:构建现代应用程序的基石
  • PYTHON实现麦克风实时传流语音听写
  • verilog函数和任务
  • 跳表:数据结构中的“快速通道”
  • 内容安全与系统构建加速,助力解决生成式AI时代的双重挑战