【发布时间】:2015-05-03 05:36:39
【问题描述】:
我有超过 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 性能是关键
【问题讨论】:
-
它的管道让你的进程中断。将您的
head .. | sha1sum放入脚本中。还要在头部添加一个“$@”作为参数。祝你好运。 -
这不是部分废除了哈希的使用吗?也就是说,如果有几个字节发生变化——不管它们的位置如何——哈希值会发生变化?
-
考虑使用
GNU Parallel来完成工作,使用您支付的所有这些可爱的核心闲置。很简单,只需发送您可能遇到的命令列表parallel