Amazon s3 如果文件存储在云中,Dropbox等服务如何实现增量编码?
Dropbox声称,在同步过程中,仅将更改的部分文件传输回主服务器,这显然是一个很好的功能,但它们如何对存储在AmazonS3云中的文件执行更改?例如,假设用户桌面上的30页文档只包含对第4页的更改。Dropbox现在同步表示更改的块,如果它们存储的文件在云中,后端会发生什么?这是否意味着他们必须将存储在S3中的30页文档下载到他们的服务器,然后替换代表第4页的块,然后上传回云?我怀疑情况会是这样,因为那样会有点低效。我可以想到的另一个选项是,如果AmazonS3提供了基于字节范围的云存储文件更新,那么例如,从字节100-200向文件X发出PUT请求,这将用PUT请求的值替换从100到200的所有字节。所以我很好奇,使用亚马逊等其他云服务的公司是如何实现这种同步的Amazon s3 如果文件存储在云中,Dropbox等服务如何实现增量编码?,amazon-s3,cloud,rsync,dropbox,Amazon S3,Cloud,Rsync,Dropbox,Dropbox声称,在同步过程中,仅将更改的部分文件传输回主服务器,这显然是一个很好的功能,但它们如何对存储在AmazonS3云中的文件执行更改?例如,假设用户桌面上的30页文档只包含对第4页的更改。Dropbox现在同步表示更改的块,如果它们存储的文件在云中,后端会发生什么?这是否意味着他们必须将存储在S3中的30页文档下载到他们的服务器,然后替换代表第4页的块,然后上传回云?我怀疑情况会是这样,因为那样会有点低效。我可以想到的另一个选项是,如果AmazonS3提供了基于字节范围的云存储文件更
谢谢因为S3和类似的存储不提供文件系统功能,任何假装存储文件和目录的东西都需要模拟文件系统。在执行此操作时,文件通常被拆分为特定大小的页面,其中每个页面都存储在存储器中的单独文件中。这样,更改的块只需要上载一页(例如),而不需要上载整个文件。我应该注意,对于像office文档这样的文件,如果文件大小发生变化,这种方法可能会出错——例如,如果在开头插入一个页面或删除一个页面,那么整个文件都会发生变化,需要重新上传完整的文件。我们没有特别分析Dropbox是如何完成他的工作的,我只是描述了常见的场景。还有不同的“补丁算法”,可以在本地创建补丁(如果Dropbox在缓存中有较旧的本地副本),然后应用到服务器上的一个或多个块 有几种同步工具可以通过线路传输增量,如rsync、rdiff、rdiff backup等。对于与S3的双向同步,有付费服务,例如。对于纯客户端同步,可以考虑使用类似的工具(这是许多人用来推出应用程序更新的工具) 另一种方法是使用tar-ball目录,生成增量文件(使用rdiff或xdelta3),并使用时间戳作为密钥的一部分来上载增量文件。要同步,您只需在客户端执行以下两项检查: