2014-01-12 76 views
0

使用備份應用程序時,備份的一種優質且節省空間的方法是檢測文件中的更改。一些在線服務如Dropbox也可以做到這一點,因爲Dropbox包含版本歷史記錄。備份應用程序如何檢測文件中的更改並將其存儲?如何編碼增量文件備份?

如果你有一個很大的文件已經被備份,並且你做了一些小的改動(例如在Microsoft Word文檔中),應用程序如何檢測到一個改變並對其進行處理?如果文件經常發生更改,則必須有一個有效的算法來處理更改,而不是整個文件。有沒有一種算法在C#.NET中做到這一點?

編輯:我試圖找出兩個文件的原件和變化(在VCDIFF格式或等)如何編碼我知道如何使用的格式和解碼它就好了。

回答

0

檢測的變化,就可以計算原始和文件的修改版本的哈希代碼(如MD5)。如果它們相同,則不做任何更改。
我認爲DropBox有自己的協議來檢測這個文件的哪一部分被修改。
你可以找出你自己的方式,例如,將文件分成固定大小的部分,存儲他們的散列碼。當客戶端下載文件時,將這些信息發送給客戶端。修改文件後,重新計算零件的散列碼,將它們與原始散列碼進行比較,上傳修改的零件,從原零件和修改的零件重建文件。
rsync是一個開源工具,它使用增量編碼來同步文件。
------------------------------------------------ ----
編輯:我上面的想法很簡單,效率不高。
你可以看看VCDIFF這是由研究論文解釋和許多語言(C#)實施。

+0

我正在尋找處理更改的方法。如果在一個非常大的文本文件中添加一個小字,這個系統效率不高,尤其是在開始時。小改動後文件中的每個塊都將被修改。我需要它來修改,添加數據和刪除數據。 –

+0

@PhoenixLogan:你說得對,我的想法很簡單,效率不高。我編輯了我的答案。 – houssam

+0

我編輯了我的帖子,請看看它。 –