GoodSync 中文文档 下载 App

块级传输引擎——为什么 GoodSync 比普通同步快得多

文件级 vs 块级:同步效率的本质差异

普通文件同步工具的工作方式很简单——对比两端文件的时间戳和大小,如果发现有变动,就把整个文件重新传输过去。对于几十 KB 的文档文件,这个方案足够用了;但对于虚拟机镜像(动辄几十 GB)、视频素材(几 GB)、打包的归档文件这类大文件,哪怕只修改了其中几个字节,也需要重新传输整个文件,造成巨大的带宽浪费。

GoodSync 采用的块级传输则是另一种思路。它先在两端分别对文件进行分块哈希——把文件按固定大小(通常是几 KB 到几 MB)切成若干块,每块计算一个哈希值,然后对比两端的哈希列表。只有那些哈希值不一致的块才会被传输,两端哈希一致的块直接复用。

块级传输示意图
只传输变更的数据块

块级传输的典型场景

大文件部分修改

假设一个 10GB 的虚拟机镜像文件 vmdk,只在中间某个块发生了变更:

断点续传

块级传输天然支持断点续传——传输中断后,只需要重新校验哪些块已经成功、哪些还需要传输,不需要从头开始。

时间戳保持

在块级传输完成后,GoodSync 会把目标文件的修改时间设置为源文件的时间戳,确保文件级对比工具也能正确判断两端一致。

块级传输的实现前提

块级传输虽然高效,但也有一些前提条件需要满足:

安全附加:块级 MD5 校验

GoodSync 在块级传输时,除了用哈希判断哪些块需要传输,还可以在传输完成后对目标端文件做一次 MD5 全量校验,确认所有块拼接后的文件与源文件完全一致。这是一个可选但推荐开启的特性,尤其是在传输重要数据时。