2011-08-15 89 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