md5 / sha1散列大文件

阿莎

我有超过1/2百万个文件要散列到多个文件夹中md5 / crc散列花费的时间太长,有些文件的大小在1GB到11Gb之间,我只是考虑使用head来散列文件的一部分

因此,以下内容适用于哈希查找和哈希所有内容。

find . -type f -exec sha1sum {} \;

我只是确定如何进一步,只对文件的第一个256kB做哈希,例如

find . -type f -exec head -c 256kB | sha1sum 

不知道在这种情况下head是否可以使用dd会更好吗?上面的命令无效,因此正在寻找有关如何执行此操作的想法

我希望输出与在本地md5sum中看到的输出相同,例如,采用以下格式(转到文本文件)

<Hash>  <file name>

我不确定是否单行可以实现以上功能,还是需要使用for / do循环.....在RHEL6上使用bash的性能至关重要

奥莱·丹吉(Ole Tange)

目前尚不清楚您的限制在哪里。您的磁盘速度慢还是CPU速度慢?

如果您的磁盘不是限制,则可能使用单个内核来限制您。GNU Parallel可以帮助您:

find . -type f | parallel -X sha256sum

如果限制是磁盘I / O,那么您的想法head很有意义:

sha() {
   tail -c 1M "$1" | sha256sum | perl -pe 'BEGIN{$a=shift} s/-/$a/' "$1";
}
export -f sha
find . -type f -print0 | parallel -0 -j10 --tag sha

最佳值-j10取决于您的磁盘系统,因此请尝试对其进行调整,直到找到最佳值(该值可低至-j1)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章