考えられる方法の 1 つは次のとおりです。
sha1sum path/to/folder/* | sha1sum
ディレクトリ ツリー全体がある場合は、find と xargs を使用する方がよいでしょう。考えられるコマンドの 1 つは、
find path/to/folder -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum
最後に、権限と空のディレクトリも考慮する必要がある場合:
(find path/to/folder -type f -print0 | sort -z | xargs -0 sha1sum;
find path/to/folder \( -type f -o -type d \) -print0 | sort -z | \
xargs -0 stat -c '%n %a') \
| sha1sum
stat
への引数 は、ファイルの名前を出力し、その後に 8 進数のパーミッションを出力します。 2 つの検索は次々に実行され、ディスク IO の量が 2 倍になります。最初の検索ではすべてのファイル名と内容のチェックサムが検索され、2 番目の検索ではすべてのファイル名とディレクトリ名が検索され、名前とモードが出力されます。 「ファイル名とチェックサム」のリストに続いて「名前とディレクトリ、パーミッション」のリストがチェックサムされ、より小さなチェックサムが求められます。
-
aide のようなファイル システム侵入検知ツールを使用してください。
-
ディレクトリの tar ボールをハッシュします:
tar cvf - /path/to/folder | sha1sum
-
vatine の oneliner のように、何か自分でコーディングしてください:
find /path/to/folder -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum