我需要区分两个非常大文件,太大了,无法diff
处理。rdiff
可以在几秒钟内为它们生成一个增量文件,但我希望有一个真正的差异作为输出。有没有现成的方法将rdiff
增量转换为常规差异?
答案1
我认为这不可能(轻易)实现。rdiff
将文件解析为字节块,为固定大小的字节块生成签名。然后将新文件与这些签名进行比较。增量文件包含所有不同的块,这些块不一定与原始文件或比较文件中的行匹配。
例如原文:
AAAAAAAAAA
BBBBBBBBBB
CCCCCCCCCC
DDDDDDDDDD
和....相比:
AAAAAAAAAA
BBBBOOOBBB
CCCCCCCCCC
DDDDDDDDDD
可能会产生一个增量:
[..]BOOOBBB
CCCCCCCCCCC
DDDDDDD[..]
常规diff
文件通常包含所有更改的行。rdiff
增量文件可能只包含部分更改的行,也可能包含大量未更改的行。您必须再次解析文件才能确定实际更改的行。
有关详细信息,请参阅rdiff
文档或http://librsync.sourcefrog.net/doc/rdiff.html