2009-12-09 81 views
2

通常這兩個文件都可用於運行某些diff工具,但我需要找到2個二進制文件中的差異,其中一個位於服務器中,另一個位於移動設備中。然後只有不同的部分可以發送到服務器並更新文件。遠程二進制文件的同步(差異)

回答

1

bsdiff工具。 Debian也有一個bsdiff包,並且有像python-bsdiff這樣的高級編程語言接口。

我認爲越獄的iPhone,Android或類似的移動設備可以運行bsdiff,但也許你必須自己編譯軟件。

但是請注意!如果您僅使用二進制diff來決定更新文件的哪一部分,最好使用rsync。 rsync有一個內置的二進制差異算法。

0

要找到差異,您必須進行比較。如果無法比較,則無法計算最小差異​​。

你對本地文件做了哪些改變?

  • 插入?
  • 刪除?
  • 更新?

如果只更新,即。未改變的數據的大小和位置是恆定的,那麼塊類型的校驗和解決方案可能工作,將文件分成塊,計算每個塊的校驗和,並與先前的校驗和列表進行比較。那麼你只需發送修改後的塊。

此外,如果可能的話,您可以在本地存儲兩個版本的文件,即舊文件和修改文件。

+0

這些文件可能是任何用戶在移動電話上執行的任何操作:圖像,視頻,數據庫。 他們定期備份到服務器 – Riho 2009-12-09 12:41:19

1

您可能通常使用該名稱,因爲diff預計其參數爲文本文件。

如果給出二進制文件,它只能說它們不同,並不是所不同的是什麼

但是你需要只更新二進制文件的修改部分

這就是開放源代碼程序Rsync的工作原理,但我不知道在移動設備上運行的任何版本。

+1

rsync在越獄iPhone上運行。 – nalply 2009-12-09 14:04:12

0

聽起來像是rsync的工作。另見librsyncpyrsync

關於rsync算法很酷的事情是,你不需要在同一臺機器上可以訪問這兩個文件。