古いNASから新しいファイルにファイルを移行しようとしています。データの整合性を検証したいと思います。古いNAS(Debian)はLinuxを使用していますExt3ファイルシステム、新しいもの(FreeNAS)はZFSに基づいていますが、整合性の検証を高速化するために、トライアージュアプローチを使用しようとしています。
最初の2つの手順で明らかに破損したファイルが除外され、ファイルのTB)に対してmd5を一括で実行するよりもはるかに迅速に検出できるという考えです。
ディレクトリ構造のmd5ハッシュを実行し、ファイル名に基づいて出力を並べ替えてLinux NASで確定的な順序を確保するために、bashコマンドを作成しました。
#find somedir -type f -exec md5sum {} \; | sort -k 34;
12e761f96223145aa63f4f48f252d7fb /somedir/foo.txt
18409feb00b6519c891c751fe2541fdc /somedir/bar.txt
しかし、各ファイルの最初の512バイトのみをmd5する場合、上記を変更するにはどうすればよいですか?
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;