我在找一个比较目录内容的快捷方式。 是否有可能做一个整个目录的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 +启动器也可用。 你可能想看看…