计算一个目录的MD5校验和

我在找一个比较目录内容的快捷方式。 是否有可能做一个整个目录的md5sum(或等效校验和)?

使用Ubuntu Linux

当然 – md5sum directory/*

如果你需要一些更灵活的东西(例如,对于目录recursion或散列比较),请尝试md5deep。

 apt-get install md5deep md5deep -r directory 

要比较一个目录结构,你可以给它一个哈希列表来比较:

 md5deep -r -s /directory1 > dir1hashes md5deep -r -X dir1hashes /directory2 

这将输出directory2中与directory1不匹配的所有文件。

这将不会显示已从directory1中删除的文件或已添加到directory2的文件。

如果你想看看两个目录之间有什么不同(如果有的话),rsync将是一个很好的select。

 rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory 

这将列出不同的文件。

我想我回答了这个答案:

 find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum 

给出: b1a5b654afee985d5daccd42d41e19b2877d66b1

这个想法就是把所有的文件都散列在一行中,然后对它们进行sorting,并对散列进行sorting,从而产生一个散列。 这不取决于文件的名称。

cfv应用程序是非常有用的,不仅可以检查和创buildMD5校验和,还可以做CRC32,sha1,torrent,par,par2。

为当前目录中的所有文件创build一个CRC32校验和文件:

 cfv -C

为当前目录中的所有文件创build一个MD5校验和文件:

 cfv -C -t md5 -f“current directory.md5sums”

为每个子目录创build一个单独的校验和文件:

 cfv -C -r

要在所有子目录中创build包含文件的“超级”校验和文件:

 cfv -C -rr

这对我有效:(在你感兴趣的目录中运行它)

 md5deep -rl . | awk '{print $1}' | sort -n | md5sum 

我使用hashdeep,正如在这个askubuntu答案解释: 检查复制文件的正确性 :

要计算校验和:

  $ cd <directory1> $ hashdeep -rlc md5 . > ~/hashOutput.txt 

validation并列出差异:

  $ cd <directory2> $ hashdeep -ravvl -k ~/hashOutput.txt . hashdeep: Audit passed Input files examined: 0 Known files expecting: 0 Files matched: 13770 Files partially matched: 0 Files moved: 0 New files found: 0 Known files not found: 0 

这比md5deep有一个优点,它将显示重命名(移动),添加和删除的文件,以及避免0长度的文件指出在http://www.meridiandiscovery.com/how-到/ validating-copy-results-using-md5deep 。

您可以创build每个单个文件的MD5总和,按字母顺序排列这些校验和,并将它们(带有或不带有换行符)。 由于MD5是密码学的,所以它应该可以很好地处理散列哈希。

应该有一定的顺序的事情,否则你会得到不同的结果相同的dirs。

而且你应该考虑在某个目录中添加一些文件会彻底改变结果,即使它只是.DS_Store文件的一个目录。

作为一个具体的例子,假设你想从directory1拷贝一些文件到directory2,然后你想用一个md5比较来validation一个成功的拷贝。

第一。 cd到directory1并键入:

 find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt 

这将为directory1中的每个文件创build一个包含md5总和的参考文件。 一旦完成,你所要做的就是cd到directory2并键入:

 md5sum -c ~/Desktop/md5sum.txt 

程序md5sum从md5sum.txt文件中获取每个path,计算目标文件夹中该文件的md5sum,然后将其与文件中存储的和进行比较。

在这个过程完成后,你会得到一个总结,如“所以许多文件不匹配”或类似的东西。

我需要validation包含大量文件的备份/镜像的完整性,并最终编写一个名为MassHash的命令行程序。 它是用Python编写的。 一个GTK +启动器也可用。 你可能想看看…

http://code.google.com/p/masshash/