2

有很多二进制差异工具:

等等。它们很棒,但是是单线程的。是否可以在块上拆分大文件,同时找到块之间的差异,然后合并到最终的增量中?是否有任何其他工具、库可以在合理的时间内找到非常大的文件(数百 Gb)和 RAM 之间的差异?可能我可以自己实现算法,但找不到任何关于它的论文。

4

2 回答 2

2

ECMerge是多线程的,能够比较大文件。

于 2015-11-20T17:12:53.363 回答
1

库以在合理的时间内找到非常大的文件(数百 Gb)和 RAM 之间的增量?

尝试 HDiffPatch,它用于 50GB 游戏(不是测试 100GB):https
://github.com/sisong/HDiffPatch 它可以快速运行大文件,但不是多线程不同;
创建补丁:hdiffz -s-1k -c-zlib old_path new_path out_delta_file
应用补丁:hpatchz old_path delta_file out_new_path
diff 与 -s-1k 并输入 100GB 文件,需要 ~ 100GB*16/1k < 2GB 字节的内存;如果与 -s-128k 不同,则时间和内存更少;

bsdiff 可以更改为多线程不同:

  • 后缀数组排序算法可以用msufsort代替,是一种多线程后缀数组构造算法;
  • 匹配函数更改为多线程版本,按线程号剪辑新文件;
  • bzip2 压缩器更改为多线程版本,例如 pbzip2 或 lzma2 ...

但是这种方式需要非常大的内存!(不适合大文件)

于 2020-06-25T07:42:46.183 回答