繁体   English   中英

md5 / sha1散列大文件

[英]md5/sha1 hashing large files

我有超过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的性能至关重要

目前尚不清楚您的限制在哪里。 您的磁盘速度慢还是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 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM