Linux 单向差分文件

Linux 单向差分文件,linux,bash,diff,Linux,Bash,Diff,为了对sql数据库进行增量备份,我想生成diff 使用标准的unix“diff”工具生成不必要的大文件,因为它们包含已删除行的全文。我只需要支持在一个方向上进行修补(从完整转储和增量修补生成当前db转储) 我该怎么做呢?到目前为止,我已经尝试使用diff-e和patch-e,但它似乎无法正常工作,因为生成的文件已损坏(可能是cygwin中使用的“ed”工具的问题)早在Vim之前,曾经有一个名为“ed”的面向行的UNIX编辑器 diff有一个内置选项(-e选项),您可以使用该选项从diff创建编辑

为了对sql数据库进行增量备份,我想生成diff

使用标准的unix“diff”工具生成不必要的大文件,因为它们包含已删除行的全文。我只需要支持在一个方向上进行修补(从完整转储和增量修补生成当前db转储)


我该怎么做呢?到目前为止,我已经尝试使用diff-e和patch-e,但它似乎无法正常工作,因为生成的文件已损坏(可能是cygwin中使用的“ed”工具的问题)

早在Vim之前,曾经有一个名为“ed”的面向行的UNIX编辑器

diff有一个内置选项(-e选项),您可以使用该选项从diff创建编辑脚本

选中此处:并查找“编辑脚本”部分

下面是一个例子:



另一种方法是创建补丁文件(请参见“man patch”)

我不明白为什么不需要删除的行来重新创建完整转储。如果行消失,您不需要删除它们吗?我需要删除行的信息,但不需要这些行的实际内容。例如,1.txt:1\n 2\n 3\n 4 2.txt:1\n 3\n 4\n 5给出diff 2d1<2 4a4>5存储文本“2”被删除是浪费,因为我只需要删除行号2(无论它包含什么)这一事实。如果我需要两个方向(即将diff应用到2.txt以1.txt结束),则保留它是必要的,但如果我只需要一个方向,则不保留它。我认为这是最好的选择。似乎cygwin版本的ed可能有一些问题,这是它不能正常工作的唯一原因。