2011-08-15 47 views
4

我想知道Dropbox的是如何能够在不更换或重新再上传文件到Dropbox的服务器Dropbox同步是如何工作的?

例的大型数据文件同步:一个加密的ZIP压缩文件

假设我有一个1GB的加密zip压缩包文件在我的电脑和Dropbox的服务器上完全同步,

在我的电脑我加入到zip压缩包文件大小的文件5MB左右然后保存在我的电脑上的文件,

,Dropbox是能够无需重新同步zip存档文件 - 再次上传整个文件,而只是用我所做的小改动来更新它。

而且TrueCrypt的容器一起工作以这种方式

任何关键词,创意,主题,评论,链接,代码是极大的赞赏。

+0

这是可以想象的最简单的技巧,完全诅咒程序员的想法。不要显示进度条。做到这一点,用户不可观察。它是一个外壳扩展,很容易使它看起来像Windows在进行实际更新时正在进行复制。当然,如果速度很慢,那是因为Windows很糟糕。你会看到资源管理器进度条。既然你看不到发生了什么,你需要一个像WireShark一样的工具来观察它。 –

+1

这是一个很好的幻觉技巧,但我不确定这是迈克尔在问什么,他在谈论如何确定文件的哪些部分已被更改,以便您不需要重新上传1Gb的数据,已经改变了5MB。 –

+0

@Russ c你正在说话 –

回答

1

我的第一个想法(很遗憾!)是它可能在块级执行散列。

例如,它可能会为每个64k段生成一个散列,然后为具有不同散列的每个部分上传整个段。

+0

如果你有一个1Gb文件,并且你把一个加密的zip文件(比如说500Mb)放到你的数据库文件夹中,我会认为改变那个源文件的一个字节会完全改变内容它的所有部分压缩版本和数据库将不得不再次上传。即我不认为哈希段技术在压缩文件中起作用。它应该在文件级别工作,因为ZIP压缩文档中的每个文件都被压缩/加密而不参考其他文件 我想固体压缩文件(http://en.wikipedia.org/wiki/Solid_compression)不能采取这个好处。 – rossmcm

7

Dropbox使用rsync算法生成差异文件A1到文件A2的增量文件。只有Delta(通常比A2小得多)上传到Dropbox服务器,因为Dropbox已经有文件A1。增量文件然后可以应用于文件A1,将其转化为文件A2。

您可以在这里了解更多关于算法的信息。 http://en.wikipedia.org/wiki/Rdiff-backup#Variations

增量创建背后的库的源代码可以在这里找到。 http://librsync.sourceforge.net/

+0

Dropbox在上传之前不会在本地加密文件吗? – Kar