2011-10-06 54 views
0

我想生成差異爲了做一個SQL數據庫的增量備份。單向差異文件

使用標準的unix'diff'工具會生成不必要的大文件,因爲它們包含已刪除行的全文。我只需要支持能夠在一個方向上進行修補(從完整轉儲和增量補丁生成當前數據庫轉儲)。

我該怎麼做呢?我已經嘗試使用diff -e和patch -e,但它似乎並沒有正常工作,因爲生成的文件已損壞(可能與cygwin中使用的「ed」工具有關)

+1

我不明白爲什麼您不需要刪除的行來重新創建完整轉儲。如果行消失,你不需要刪除它們嗎? – drysdam

+0

我需要刪除這些行的信息,但不需要這些行的實際內容。例如 的1.txt:1 \ N 2 \ N 3 \ N 4 2.txt:1 \ N 3 \ N 4 \ N 5 給所述差速器 2D1 <2 4A4 > 5 保存文本「2」被刪除是浪費的,因爲我只需要第2行(不管它包含的)被刪除的事實。保持它是必要的,如果我需要去兩個方向(即應用差異2.txt結束與1.txt),但不是如果我只需要一個方向 – idle

回答

1

返回在舊時代,Vim前,曾經有被稱爲「ED」面向行的UNIX編輯..

差異具有內置的(-e選項)選項,通過它可以創建一個編輯腳本從差異。

檢查這裏:並查找節 「編輯腳本」

http://en.wikipedia.org/wiki/Diff

http://docs.freebsd.org/info/diff/diff.info.ed_Scripts.html

這裏有一個例子:

http://www.araxis.com/merge/topic_diff_report_editscript.html


另一種方法做這個 是創建一個補丁文件(請參閱'man patch')

+0

我認爲這是最好的選擇。似乎ed的cygwin版本可能有一些問題,這是它未能正常工作的唯一原因。 – idle

+0

[「Ed是標準的文本編輯器。」](http://www.gnu.org/fun/jokes/ed-msg.html) – PLL