我有 4TB 的数百万个文件。我认为如果我可以为每个文件生成一个 .md5 文件,那就太好了。
我读 为目录中的每个 .fastq 文件生成单独的 .md5 文件? 并进行修改,使其为每个单独的文件生成一个单独的 .md5。
说:查找。-type f -name“*”-exec sh -c“md5sum {} > {}.md5”\;
但是正如我所说,我有 4TB 的数百万个文件,该命令可能无法在 2 天内完成,因此我必须关闭电脑。
当恢复时,我希望上述命令可以跳过那些已经有现有.md5 文件(即那些计算过的文件)。
如何做到这一点?当然是递归方式。
谢谢。
答案1
不需要为.md5
每个文件创建一个文件(“数百万个文件”),使用数百万个磁盘簇和数百万个 inode,而是将.md5
所有文件的签名放在一个大文件中(如果愿意,可以稍后再拆分)(阅读man find;man xargs
):
find . -type f \! -name '*.md5' -print0 | xargs -0 md5sum > md5sum.out
# Separate filenames with \000^^^^^^^ ^ in case some have spaces
# ^^^^^^^^^^^^^^^^ but NOT *.md5 files
# ^^^^^^^ each file