md5はファイルの最初の512バイトのみをハッシュします。

md5はファイルの最初の512バイトのみをハッシュします。

背景

既存のNASから新しいNASにファイルを移行しようとしており、データの整合性を確認したいと思います。以前のNAS(Debian)はLinux Ext3ファイルシステムを使用し、新しいNAS(FreeNAS)はZFSに基づいています。整合性検証を高速化するために分類方法を試しました。

  • まず、すべてのファイルサイズを確認してください。
  • 2番目に、md5は各ファイルの最初の512バイトをハッシュします。
  • 最後に、md5はファイル全体をハッシュします。

アイデアは、最初の2つのステップが明らかに破損したファイルをフィルタリングし、テラバイトファイルで一括してmd5を実行するよりもはるかに高速に検索することです。

質問

私はディレクトリ構造のmd5ハッシュを実行し、ファイル名に基づいて出力をソートして、Linux NASで決定的な順序を保証するbashコマンドを作成しました。

#find somedir -type f -exec md5sum {} \; | sort -k 34;
12e761f96223145aa63f4f48f252d7fb  /somedir/foo.txt
18409feb00b6519c891c751fe2541fdc  /somedir/bar.txt

しかし、各ファイルの最初の512バイトのみをmd5にしたい場合は、上記の内容をどのように変更できますか?

ベストアンサー1

最初のdd512バイトをmd5summd5sum-

find . -type f -exec sh -c "dd if={} bs=512 count=1 2>/dev/null | md5sum | sed s\|-\|{}\|" \; | sort -k 34;

おすすめ記事