Solaris 中有bdiff(1)
一个命令,允许您读取diff(1)
大小大于 RAM 大小的文件(文档)。
Linux中有类似的东西吗?我尝试谷歌搜索,但没有找到bdiff
Ubuntu 中的哪个软件包。
答案1
bdiff 似乎可用在 Linux 上(至少作为传家宝工具箱)。
差异
不过,我可能只会使用常规的旧 diff 与此开关:
diff --speed-large-files bigfileA bigfileB
为什么它不起作用?
请参阅@EvanTeitelman 的评论,--speed-large-files
不会影响文件加载到内存中的方式。
可以使用以下命令来演示/确认不起作用:
fallocate -l 10G testa; fallocate -l 10G testb && \
diff --speed-large-files -a testa testb
BSDIF
很难确认这一点,但我发现了一个名为bsdiff
源自bdiff
.我已经确认这个工具在 Ubuntu 中,简单地说apt-get install bsdiff
。
为什么它可能有效?
再次感谢评论中的@EvanTeitelman,bsdiff
上面是二进制文件的 diff 工具。bsdiff
是一个二进制差异工具,可以处理大文件。目前尚不清楚到底有多大。请参阅以下讨论其用途的线程链接。
差值
我想你也可以使用差值也可以这样做。 Rdiff 能够处理非常大的文件。
创建一个文件的签名:
rdiff signature A sigs.txt
使用生成的签名文件 sigs.txt 和另一个大文件 B 来创建增量:
rdiff delta sigs.txt B deltaAB.txt
当您只有 A 和增量文件 deltaAB.txt 时,Delta 包含重新创建文件 B 所需的所有信息。
要重新创建 B,请运行:
rdiff patch A deltaAB.txt B
为什么它有效?
我发现这篇博文标题为:更好的 diff 或当 GNU diff 内存不足时该怎么办(“diff:内存耗尽”),报告称 4.5GB 文件的 rdiff 仅消耗约 66MB 的 RAM。
十六进制
十六进制是一个用于查看和编辑十六进制、八进制、二进制或 ascii 文本文件的应用程序。 lfhex 的主要优势是它能够处理比系统内存大得多的文件。然而它是一个 GUI 工具。
截屏