Dropbox 同步如何工作?
我想知道 dropBox 如何能够同步大型数据文件,而无需将文件替换或重新上传到 dropbox 服务器
示例:加密的 zip 存档
假设我有一个 1GB 的加密 zip 存档文件 在我的计算机上完全同步 在dropbox 服务器上,
在我的计算机上,我向该 zip 存档文件添加了一个大小约为 5MB 的文件,然后将该文件保存在我的计算机上,
dropbox 能够同步 zip 存档文件,而无需再次重新上传整个文件,而只是将其更新为这我做了一点小改变。
TrueCrypt 容器也以这种方式工作
任何关键字、想法、主题、评论、链接、代码都将受到高度赞赏。
I want to know how dropBox is able to synchronize the large data files without replacing or re-uploading the files again to the dropbox server
Example: an encrypted zip archive
Suppose I've a 1GB encrypted zip archive file Fully synchronized on my computer and on the dropbox servers,
On my computer I added to that zip archive file a file of size about 5MB then saved the file on my computer,
dropbox is able to synchronize zip archive file without re-uploading the whole file again instead it just update it with the small change I've done.
Also TrueCrypt containers works in that manner
Any keywords, ideas, topics, reviews, links, code is greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Dropbox 使用 rsync 算法生成文件 A1 到文件 A2 之间存在差异的增量文件。由于 dropbox 已有文件 A1,因此仅将增量(通常比 A2 小得多)上传到 dropbox 服务器。然后可以将增量文件应用到文件 A1,将其转换为文件 A2。
您可以在此处了解有关该算法的更多信息。
http://en.wikipedia.org/wiki/Rdiff-backup#Variations
可以在此处找到增量创建背后的库的源代码。
http://librsync.sourceforge.net/
Dropbox uses the rsync algorithm to generate delta files with the difference from file A1 to file A2. Only the delta(usually much smaller than A2) is uploaded to the dropbox servers since dropbox already has file A1. The delta file can then be applied to file A1, turning it into file A2.
You can learn more about the algorithm here.
http://en.wikipedia.org/wiki/Rdiff-backup#Variations
The source code for the library behind the delta creation can be found here.
http://librsync.sourceforge.net/
我的第一个想法(对不起,已经晚了!)是它可能在块级别执行哈希。
例如,它可能为每个 64k 段生成一个哈希值,然后为具有不同哈希值的每个部分上传整个段。
My first thought (it's late sorry!) is that it might be performing a hash at a block level.
For example, it might generate a hash for each 64k segment and then uploads the whole segment for each portion that has a different hash.