bdiff(1)
Solaris 中有一个命令,它允许您处理diff(1)
大于 RAM 大小的文件(http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html)。
Linux 中有类似的东西吗?我试过谷歌搜索,但我没有bdiff
在 Ubuntu 中找到哪个包。
slm*_*slm 13
bdiff 似乎在 Linux上可用(至少作为传家宝工具箱的一部分)。
但是,我可能只会使用带有此开关的常规旧差异:
diff --speed-large-files bigfileA bigfileB
Run Code Online (Sandbox Code Playgroud)
请参阅@EvanTeitelman 的评论,--speed-large-files
不会影响文件加载到内存中的方式。
可以使用以下命令演示/确认不工作:
fallocate -l 10G testa; fallocate -l 10G testb && \
diff --speed-large-files -a testa testb
Run Code Online (Sandbox Code Playgroud)
很难确认这一点,但我发现了一个名为的工具bsdiff
,它源自bdiff
. 我已经确认这个工具在 Ubuntu 中,只是apt-get install bsdiff
.
再次感谢@EvanTeitelman 在评论中,bsdiff
上面是二进制文件的差异工具。bsdiff
是一个二进制差异工具,可以处理大文件。目前还不清楚有多大。请参阅以下讨论其使用的线程的链接。
我认为你也可以使用rdiff来做到这一点。Rdiff 能够处理非常大的文件。
创建一个文件的签名:
rdiff signature A sigs.txt
Run Code Online (Sandbox Code Playgroud)使用生成的签名文件 sigs.txt 和另一个大文件 B 来创建增量:
rdiff delta sigs.txt B deltaAB.txt
Run Code Online (Sandbox Code Playgroud)Delta 包含在您只有 A 和 delta 文件 deltaAB.txt 时重新创建文件 B 所需的所有信息。
要重新创建 B,请运行:
rdiff patch A deltaAB.txt B
Run Code Online (Sandbox Code Playgroud)我发现这篇博客文章的标题是:A Better diff Or What To Do When GNU diff Runs Out of Memory ("diff: memory expired"),其中报告 4.5GB 文件的 rdiff 仅消耗了约 66MB 的 RAM。
lfhex是一个用于查看和编辑十六进制、八进制、二进制或 ascii 文本文件的应用程序。lfhex 的主要优势在于它能够处理比系统内存大得多的文件。然而,它是一个 GUI 工具。