Linux:计算给定文件夹和内容的单个哈希?

新手上路,请多包涵

当然必须有一种方法可以轻松地做到这一点!

我已经尝试过 Linux 命令行应用程序,例如 sha1summd5sum 但它们似乎只能计算单个文件的哈希值并输出哈希值列表,其中一个用于每个文件。

我需要为文件夹的全部内容(不仅仅是文件名)生成一个哈希值。

我想做类似的事情

sha1sum /folder/of/stuff > singlehashvalue

编辑: 澄清一下,我的文件位于目录树中的多个级别,它们并不都位于同一个根文件夹中。

原文由 Ben L 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 687
2 个回答

一种可能的方法是:

sha1sum 路径/到/文件夹/* | sha1sum

如果有整个目录树,最好使用 find 和 xargs。一种可能的命令是

查找路径/到/文件夹 -type f -print0 |排序-z | xargs -0 sha1sum | sha1sum

最后,如果您还需要考虑权限和空目录:

 (find path/to/folder -type f -print0  | sort -z | xargs -0 sha1sum;
 find path/to/folder \( -type f -o -type d \) -print0 | sort -z | \
   xargs -0 stat -c '%n %a') \
| sha1sum

stat 的参数将导致它打印文件名,后跟八进制权限。这两个查找将一个接一个地运行,导致磁盘 IO 量翻倍,第一个查找所有文件名并对内容进行校验和,第二个查找所有文件和目录名称,打印名称和模式。然后将对“文件名和校验和”列表,然后是“具有权限的名称和目录”进行校验和,以获得较小的校验和。

原文由 Vatine 发布,翻译遵循 CC BY-SA 4.0 许可协议

  • 使用像 助手 这样的文件系统入侵检测工具。

  • 散列目录的 tar 球:

tar cvf - /path/to/folder | sha1sum

find /path/to/folder -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum

原文由 David Schmitt 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题