【rsync 原理】协议、进程模型与实测

💡 原文中文,约9700字,阅读约需23分钟。
📝

内容提要

本文深入探讨了rsync的差异同步算法,介绍了生成器、发送者和接收者三个角色。通过分析数据传输生命周期和token字节流格式,阐明了弱滚动校验和强校验在优化数据传输效率中的作用。实测结果显示,rsync在本地传输时默认使用整文件传输,强调了选择合适传输方式的重要性。

🎯

关键要点

  • rsync的三个角色分别是生成器(generator)、发送者(sender)和接收者(receiver)。

  • rsync在本地传输时默认使用整文件传输,强调选择合适的传输方式。

  • rsync的传输生命周期包括启动握手、构建文件列表、逐文件处理和重建文件。

  • rsync的字节流协议没有明确的边界,数据以不间断的字节流形式传输。

  • 强校验算法通过协商决定,rsync 3.4.4版本中默认使用xxh128算法。

  • 实测结果显示,修改1个字节时,使用差异传输(delta)仅需传输约120KiB,而整文件传输则需传输100MiB。

  • rsync的性能受版本和构建选项影响,理解这些权衡比记住命令行参数更为重要。

🔎

延伸解读

rsync的角色与数据流

rsync的工作机制中,生成器、发送者和接收者各自承担不同的角色。生成器负责遍历文件列表并计算校验和,发送者进行数据匹配并传输数据,而接收者则重建文件。这种角色分工使得数据传输过程高效且流畅,尤其在本地传输时,rsync通过管道实现了无缝的数据流动。

选择传输方式的重要性

rsync在本地传输时默认使用整文件传输,这可能导致不必要的资源浪费。通过显式使用--no-whole-file选项,可以启用差异传输,显著减少传输数据量。理解不同传输方式的适用场景,尤其是在带宽和CPU资源有限的情况下,能够帮助用户优化数据同步效率。

强校验算法的演变

rsync的强校验算法经历了从MD5到xxh128的演变,后者在性能上有显著提升。强校验的选择依赖于双方支持的算法,协商过程确保了最佳性能。了解这些算法的变化及其对rsync性能的影响,对于用户在不同版本间的使用和优化至关重要。

延伸问答

rsync的三个角色分别是什么?

rsync的三个角色是生成器(generator)、发送者(sender)和接收者(receiver)。

rsync在本地传输时默认使用什么传输方式?

rsync在本地传输时默认使用整文件传输。

rsync的传输生命周期包括哪些步骤?

rsync的传输生命周期包括启动握手、构建文件列表、逐文件处理和重建文件。

rsync的字节流协议有什么特点?

rsync的字节流协议没有明确的边界,数据以不间断的字节流形式传输。

rsync中强校验算法是如何决定的?

强校验算法通过协商决定,rsync 3.4.4版本中默认使用xxh128算法。

rsync的实测结果显示了什么?

实测结果显示,修改1个字节时,使用差异传输仅需传输约120KiB,而整文件传输则需传输100MiB。

🏷️

标签

➡️

继续阅读