我正在使用zlib的adler32函数来计算一块内存x(长度为4096)的弱校验和.一切都很好,但是现在我想执行滚动校验和,如果来自不同文件的块不匹配,但是,我不知道如何编写一个函数来执行zlib中adler32返回的值.因此,如果校验和不匹配,如何使用原始校验和,x + 1字节和x + 4096 + 1来计算滚动校验和?基本上试图建立rsync实现.
提前致谢.
Dropbox声称在同步期间只将更改的文件部分传输回主服务器,这显然是一项很棒的功能,但是他们如何对存储在Amazon S3云中的文件进行更改?例如,假设用户桌面上的30页文档仅包含对第4页的更改.Dropbox现在会同步代表更改的块以及后端发生的情况,如果它们存储的文件位于云中?这是否意味着他们必须将存储在S3中的30页文档下载到他们的服务器,然后执行代表第4页的块的替换,然后上传回云?我怀疑情况会是这样,因为那会有些低效.我能想到的另一个选择是,如果Amazon S3基于字节范围提供存储在云中的文件的更新,例如,从字节100-200向文件X发出PUT请求,这将从100到200替换所有字节具有PUT请求的值.所以我很好奇那些使用其他云服务(如亚马逊)的公司如何实现这种类型的同步.
谢谢