在Linux中有什么办法来计算两个二进制文件(即两个可执行文件)之间的差异?
让我更具体的:我想知道如何计算在Linux中的两个版本的可执行文件或应用程序或软件之间的增量(差异)。 例如,如果我只需下载和安装现有应用程序或二进制文件的更新部分(最新版本和旧版本之间的差异),我该如何在Linux中执行此操作。
您可以使用工具bsdiff ,它是bspatch的伴侣,用于执行二进制文件的有效比较和补丁。
如果你想得到更小的补丁,你可以看看谷歌浏览器中的Courgette 。 它建立在bsdiff之上,但是它们在执行diff之前通过实际分解它们来提供更有效的可执行文件差异。 它不是作为一个单独的项目分发的,但是您可以从Chromium源代码库获取它(如何检查代码 )。
还有xdelta工具,比bsdiff长。 据bsdiff的作者说,效率相当低。 补丁出来更大。 它具有支持标准的VCDIFF格式( RFC 3284 )的优点,它也由其他几个工具支持,因此如果您需要使用其他工具,则会更有用。
差异会告诉你,如果二进制文件是不同的:
diff bin1 bin2 Binary files bin1 and bin2 differ
如果你想要的差异,使用cmp :
cmp -l bin1 bin2 25 20 320 26 4 3 41 270 160 209 4 264 210 7 6
-l
选项打印字节号和区别:
-l --verbose Output byte numbers and values of all differing bytes.
尝试cksum – 表明它们是相同的
你可以使用diff :
diff old_file new_file
你也可以使用md5,但你必须比较结果。 如果md5检查总和可用,它也可以用于检查下载文件的总和。