Jim*_*969 6 shell-script hashsum data
我即将将文件从旧 NAS 迁移到新 NAS,并想验证数据完整性。旧的 NAS (Debian) 使用 Linux Ext3 文件系统,而新的 (FreeNAS) 基于 ZFS。为了加快完整性验证,我正在尝试使用分类方法:
这个想法是前两个步骤将过滤掉明显损坏的文件,并且比批量运行 md5 来检测 TB 文件要快得多。
我已经构建了一个 bash 命令来执行目录结构的 md5 哈希,并根据文件名对输出进行排序以确保我的 Linux NAS 上的确定性顺序。
#find somedir -type f -exec md5sum {} \; | sort -k 34;
12e761f96223145aa63f4f48f252d7fb /somedir/foo.txt
18409feb00b6519c891c751fe2541fdc /somedir/bar.txt
Run Code Online (Sandbox Code Playgroud)
但是如果我只想 md5 每个文件的前 512 个字节,如何修改上面的内容?
您可以使用dd仅将前 512 个字节通过管道传输到md5sum. 然而,这会导致md5sum忘记文件名,所以另外-再用文件名替换。
find . -type f -exec sh -c "dd if={} bs=512 count=1 2>/dev/null | md5sum | sed s\|-\|{}\|" \; | sort -k 34;
Run Code Online (Sandbox Code Playgroud)