我需要区分两个非常大的文件,太大而diff无法处理。rdiff可以在几秒钟内为他们生成一个增量文件,但我想要一个真正的差异作为输出。是否有将rdiff增量转换为常规差异的现有方法?
我认为这不可能(轻易)实现。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