计算目录的 MD5 校验和

计算目录的 MD5 校验和

我正在寻找一种快速比较目录内容的方法。是否可以对整个目录进行 md5sum(或等效校验和)?

使用 Ubuntu Linux

答案1

当然 -md5sum directory/*

如果您需要更灵活的功能(例如,用于目录递归或哈希比较),请尝试 md5deep。

apt-get install md5deep
md5deep -r directory

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

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

这将输出目录 2 中所有与目录 1 不匹配的文件。

这不会显示已从目录 1 中删除的文件或已添加到目录 2 的文件。

答案2

如果您想查看两个目录之间有什么不同(如果有的话),rsync 将是一个不错的选择。

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

这将列出所有不同的文件。

答案3

我想我之前回答过这个问题:

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

给出:b1a5b654afee985d5daccd42d41e19b2877d66b1

这个想法是,你对所有文件进行哈希处理,每行切出一个哈希值,对它们进行排序,然后进行哈希处理,得到一个哈希值。这并不依赖于文件的名称。

答案4

我使用了 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 有一个优势,因为它会显示重命名(移动)、添加和删除的文件,同时避免了在底部指出 0 长度文件的问题http://www.meridiandiscovery.com/how-to/validating-copy-results-using-md5deep

相关内容