私は考えていた:
私はbashを使用しています
md5sum
は、入力としてディレクトリを取りませんが、
tar cf - FOO | md5sum
ファイルがFOO内の任意の場所で変更された場合、チェックサムは変更されますが、どのファイルのヒントはありません。ファイルのメタデータ(権限、タイムスタンプなど)が変更されると、チェックサムも変更されます。
あなたは使用を検討するかもしれません:
find FOO -type f -exec md5sum {} \; > FOO.md5
これにより、すべてのファイルが個別にmd5され、結果がFOO.md5に保存されます。これにより、どのファイルが変更されたかを簡単に確認できます。このバリアントは、メタデータではなく、ファイルの内容にのみ依存します。
https://blake2.net/ で彼らは主張します:
「BLAKE2は、MD5、SHA-1、SHA-2、SHA-3よりも高速の暗号化ハッシュ関数ですが、少なくともと同じくらい安全です。 最新の標準SHA-3。BLAKE2は、その高速性、セキュリティ、およびシンプルさにより、多くのプロジェクトで採用されています。」
したがって、いくつかのツールがそれを使用しています。 rmlint https://github.com/sahib/rmlint 。
とにかく、 https://unix.stackexchange.com/a/228758/9689 に従って、次のこともできます:
find "${dirname}"/ -type f -exec b2sum -b -l 256 {} \; > "${dirname}".blake2sum_l256
後で確認してください:
b2sum -c "${dirname}".blake2sum_l256
または、失敗したものだけを表示するには、次のようにします。
b2sum --quiet -c "${dirname}".blake2sum_l256
ZFSはそのようなチェックサムを作成しますが、これは内部使用のみです。
オブジェクトからチェックサムを計算するには、このオブジェクトを読み取る必要があります。ディレクトリの場合、これは許可されていません。
多くのファイルシステムは、ディレクトリを読み込もうとするとEISDIRエラーを返し、ZFSはさらに、ディレクトリの「サイズ」をバイト数ではなく、そのディレクトリ内のエントリ数に設定します( read(2)ディレクトリ)。
一部のファイルシステムがまだread(2)ディレクトリーを許可しているという事実はバグです-readdir()呼び出しがなかった1970年代の残されたアーティファクト。
ところで:私のWOFSでは、ファイルタイプのコンテンツがないため、すべてのディレクトリのサイズは0です。これは、ファイルがメタデータで「ねえ、私はこのディレクトリにいます」と言っているためです。 WOFSとは何か疑問に思われる場合は、WOFSの他のすべての基本概念がZFSに組み込まれています。
1.ディレクトリにmd5sumが必要なのはなぜですか?ファイルの一貫性や整合性を確認したい場合は、それをtarしてtar
/tar.gz
ファイルのハッシュを作成できます。
2.サブディレクトリがある場合は少し難しくなります。ファイルしかない場合は、例としてこれを試してください。
#!/bin/bash
for i in /home/{username}/Books/rhel/; do
md5sum "$i"
done
出力例:
dd7a684cc8668d208ca5dcf00bc58e8d Red_Hat_Enterprise_Linux-6-Deployment...
775602071a1ec5a1ac1a99cee9d065fa Red_Hat_Enterprise_Linux-7-High_Av..