我正在寻找一种比较目录内容的快速方法。是否可以对整个目录执行md5sum(或等效的校验和)?
使用Ubuntu Linux
我正在寻找一种比较目录内容的快速方法。是否可以对整个目录执行md5sum(或等效的校验和)?
使用Ubuntu Linux
Answers:
当然- md5sum directory/*
如果您需要一些更灵活的功能(例如,用于目录递归或哈希比较),请尝试md5deep。
apt-get install md5deep
md5deep -r directory
要比较目录结构,可以为它提供一个哈希表列表以进行比较:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
这将输出目录2中与目录1不匹配的所有文件。
这不会显示已从目录1中删除的文件或已添加到目录2中的文件。
-j0
它禁用多线程(请参见手册页)。
md5deep
了sudo apt-get install md5deep
on,Ubuntu 16.04
但是当我尝试阅读手册页时,它告诉我> md5deep没有手动输入
如果您想查看两个目录之间的区别(如果有的话),那么rsync非常适合。
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
这将列出所有不同的文件。
diff -qr /source/directory/ /destination/directory/
还会显示不同的文件。
username@hostname:/destination/directory
该CFV应用程序是非常有用的,它不仅可以检查并创建MD5校验和,它也可以做CRC32,SHA1,激流,PAR,PAR2。
为当前目录中的所有文件创建CRC32校验和文件:
cfv -C
为当前目录中的所有文件创建一个MD5校验和文件:
cfv -C -t md5 -f“当前目录.md5sums”
为每个子目录创建一个单独的校验和文件:
cfv -C -r
创建包含所有子目录中文件的“超级”校验和文件:
cfv -C -rr
我使用了hashdeep,如以下askubuntu答案中所述: 检查复制文件的正确性:
要计算校验和:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
要验证并列出差异:
$ 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相比,它具有一个优势,因为它将显示重命名(移动),添加和删除的文件,并且避免了http://www.meridiandiscovery.com/how-底部指出的长度为0的文件的问题。到/使用md5deep验证复制结果。
您可以为每个文件创建MD5和,按字母顺序排列这些校验和并具有它们(带或不带换行符)。由于MD5是加密的,因此它在使用哈希值时应该可以正常工作。
事物应该有一定的顺序,否则相等的dirs您将获得不同的结果。
你应该考虑的是增加了一些文件,以一个目录将彻底改变的结果,即使它只是一个.directory
的.DS_Store
文件。
作为一个特定的例子,假设您要将一些文件从directory1复制到directory2,然后要使用md5比较来验证成功的复制。
第一。cd到directory1并键入:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
这将为目录1中的每个文件创建一个包含md5总和的参考文件。完成此操作后,只需将cd转到directory2并键入:
md5sum -c ~/Desktop/md5sum.txt
程序md5sum从md5sum.txt文件中获取每个路径,计算该文件在目标文件夹中的md5sum,然后将其与文件中存储的总和进行比较。
该过程完成后,您将获得一个摘要,例如“如此多的文件不匹配”或类似的内容。
我需要验证包含大量文件的备份/镜像的完整性,并最终编写了一个名为MassHash的命令行程序。它是用Python编写的。还提供了GTK +启动器。您可能要检查一下...