如何将 rdiff delta 文件转换为常规 diff?

uck*_*man 5 diff

我需要区分两个非常大的文件,太大而diff无法处理。rdiff可以在几秒钟内为他们生成一个增量文件,但我想要一个真正的差异作为输出。是否有将rdiff增量转换为常规差异的现有方法?

Kam*_*oij 2

我认为这不可能(轻易)实现。rdiff将文件解析为字节块,生成固定大小字节块的签名。然后将新文件与这些签名进行比较。增量文件包含所有不同的块,这些块不一定与原始文件或比较文件中的行匹配。

例如,原件:

AAAAAAAAAA
BBBBBBBBBB
CCCCCCCCCC
DDDDDDDDDD
Run Code Online (Sandbox Code Playgroud)

和....相比:

AAAAAAAAAA
BBBBOOOBBB
CCCCCCCCCC
DDDDDDDDDD
Run Code Online (Sandbox Code Playgroud)

可以产生一个增量:

[..]BOOOBBB
CCCCCCCCCCC
DDDDDDD[..]
Run Code Online (Sandbox Code Playgroud)

常规diff文件通常包含所有更改的行。增量文件rdiff可能只是一些已更改行的一部分,以及许多未更改的行。您必须再次解析文件以确定实际更改的行。

有关更多信息,请参阅rdiff文档或http://librsync.sourcefrog.n ​​et/doc/rdiff.html