如果他们的文件存储在云中,Dropbox等服务如何实现增量编码?

boo*_*ost 4 cloud rsync amazon-s3 dropbox

Dropbox声称在同步期间只将更改的文件部分传输回主服务器,这显然是一项很棒的功能,但是他们如何对存储在Amazon S3云中的文件进行更改?例如,假设用户桌面上的30页文档仅包含对第4页的更改.Dropbox现在会同步代表更改的块以及后端发生的情况,如果它们存储的文件位于云中?这是否意味着他们必须将存储在S3中的30页文档下载到他们的服务器,然后执行代表第4页的块的替换,然后上传回云?我怀疑情况会是这样,因为那会有些低效.我能想到的另一个选择是,如果Amazon S3基于字节范围提供存储在云中的文件的更新,例如,从字节100-200向文件X发出PUT请求,这将从100到200替换所有字节具有PUT请求的值.所以我很好奇那些使用其他云服务(如亚马逊)的公司如何实现这种类型的同步.

谢谢

Eug*_*its 5

由于S3和类似的存储不提供文件系统功能,任何假装存储文件和目录的东西都需要模拟文件系统.在执行此操作时,文件通常会拆分为特定大小的页面,其中每个页面都存储在存储中的单独文件中.这样,更改的块只需要上传一个页面(例如),而不是整个文件.我应该注意,对于像office文档这样的文件,如果文件大小发生变化,这种方法可能会出错 - 例如,如果您在开头插入页面或删除页面,那么整个文件将被更改,并且需要完整的文件要重新上传.我们没有分析Dropbox如何完成他的工作,我刚刚描述了常见的场景.还存在不同的"补丁算法",其中可以在本地创建补丁(如果Dropbox在缓存中具有较旧的本地副本),然后应用于服务器上的一个或多个块.