如何在 Linux 下对两个相同大小的文件进行二进制差异?

Jon*_*age 39 linux diff

我有两个大小相同的文件,我需要做一个二进制差异来检查它们是否相同。

我目前正在运行,diff file1.img file2.img但处理我的 4 GB 文件需要很长时间。这是最有效的方法吗?

mpe*_*ez0 46

cmp旨在查找二进制文件中的差异。您也可以尝试校验和 ( sum) 并比较哈希值。


Ada*_*kin 21

确定两个文件是否相同(假设它们的大小匹配)的最常见方法之一是使用程序创建文件的“散列”(本质上是指纹)。最常见的是md5sumsha1sum

例如:

$ md5sum file1 file2
e0e7485b678a538c2815132de7f9e878  file1
4a14aace18d472709ccae3910af55955  file2
Run Code Online (Sandbox Code Playgroud)

如果您有许多文件需要检查,例如,如果您将一个充满文件的目录从一个系统传输到另一个系统,您可以将原始系统的输出重定向到一个文件,然后md5sum/sha1sum可以自动使用该文件来告诉你哪些文件不同:

$ md5sum file1 file2 > MD5SUMS
... copy file1, file2, MD5SUMS across
$ md5sum --check MD5SUMS
file1: OK
file2: OK
Run Code Online (Sandbox Code Playgroud)

  • 实际上,MD5 *对于基本完整性检查是可靠的。它只是不像我们曾经认为的那样具有强大的加密功能。如果您担心黑客,请不要使用 MD5,但是如果您只想知道从 CD 复制的某些文件是否已损坏,或者您的编译器是否每次都吐出相同的文件,那么 MD5 就足够了。 (28认同)
  • MD5 并不总是可靠的:http://digg.com/security/MD5_Hash_Clash_two_different_executables_with_the_same_MD5_hash (2认同)

Jon*_*age 17

找到了一个解决方案 -大多数 Linux 版本附带的 cmp 工具