对于给定的树,例如 /var/ftpd,如何在该树的每个文件夹中创建一个哈希文件,其中包含给定树中该文件夹的内容?sha1sum 和 sha512sum 没有递归选项。
答案1
FWIW解决方案是:
用户@主机 bin]$ cat mkshaidir /bin/dash 的 #!/bin/dash 光盘$1 sha512sum * >.sha512sum [用户@主机 bin]$ find /var/ftpd -type d -print0 | xargs -0 -i mkshaindir {}
请注意,对于我的目的而言,mkshaindir 是一个单独的组件,因为我可能需要对新文件夹中的文件或最近更改的文件进行哈希处理。
其余部分留给读者练习。
注意:sha512sum 将向 STDERR 抱怨非文件输入(例如目录、块文件等)。
答案2
脚本应避免将哈希文件本身包含在计算中,因为保存哈希文件会使哈希无效。
此外,我建议使用以下方法find -exec
来节省资源:
find /var/ftpd -type d -print0 ! -name .sha512sum -exec mkshaindir {} \;