2014-05-12 26 views
0

我想生成增量文件,即。包含兩個文件之間變化的文件,這些文件的大小很小。如何使用diff獲取小型差量文件(文件更改)?

但是,當我使用-u格式運行diff實用程序來創建統一格式的diff文件時,文件太大。

我與它的內容2個文本文件,看到下面

的1.txt: 「hello1234」

2.txt: 「hello5678」

運行時,「差異-u的1.txt 2.txt」所得到的差異文件是182個字節,如下所示:

--- 1.txt的2014年5月12日03:54:58.000000000 -0400

+++ 2.txt 2014-05 -12 03:55:03.000000000 -0400

@@ -1 +1 @@

-hello1234

\在文件末尾的文件

+ hello5678

末不換行\沒有換行符

與僅有9字節大小的原始文件相比,這是巨大的。

是否有一個實用程序或其他方法可以產生比源文件小的diff文件(例如svn/git utilities)?

意圖是在文件更新的情況下通過網絡傳輸這些增量文件,而不是傳輸整個文件本身。

+0

沒有這些數據,'patch'無法正常運行。您要求提供特定的差異格式,即格式。您能否將遠程端指向您的VCS並使用其內置方法來獲取更新?怎麼樣壓縮你的文件傳輸,無論是通過壓縮或使用像SFTP或SCP的內置壓縮方法? – alroc

+0

@nope挑戰問題 - 您提交了兩個文件,每個文件包含9個字節,其中4個不同。你能否提出一種「差異」格式來明確識別原始文件中哪些4字節需要改變,以及需要在少於9字節內改變它們?如果變化是從「h1e2l3l4o」到「h5e6l7l8o」呢? – twalberg

回答

0

如果你想「增量」的文件,不要使用diff /補丁,他們是不是真的意味着這個使用(尤其是diff -u,正常模式是較爲簡潔)。 您應該使用xdelta,bsdiff或類似的東西(即以二進制爲導向)。面向字符的文本差異可能會比簡單的diff做得更好。

有些情況下,沒有辦法比重複整個文件更有效地表達變化(然而某些文件包含高密度的變化且具有不可預測的地方)。你的情況就是這樣的情況,好消息是典型情況比這更好,即使在數據庫或複雜的源代碼上也是如此。

有一些值得注意的情況:delta不起作用:加密或壓縮文件。在這種情況下,應該在解密/解壓縮版本上計算文件增量。

相關問題