/ binとサブディレクトリのすべてのファイルをmd5sumし、bashスクリプトを使用してハッシュを確認するにはどうすればよいですか?

/ binとサブディレクトリのすべてのファイルをmd5sumし、bashスクリプトを使用してハッシュを確認するにはどうすればよいですか?

私は前に試しました

find /bin -type -f -exec md5sum {} + >>sum.md5 

ディレクトリ/binには複数のファイル形式が含まれていますが、上記は通常のファイルのチェックサムのみを返します。調べる方法はありますか?すべてのファイルそして以下で/bin実行してmd5sum チェックサムを確認しますか?

私が達成したいものの詳細は次のとおりです。/binサブディレクトリとすべてのファイルをmd5sumにバックアップold.md5して圧縮し、クラウドにアップロードします。たとえば、システムがクラッシュした後、クラウドから/binディレクトリをダウンロードして復元し、md5sumコマンドを再実行してnew.md5すべてのファイルのハッシュを含むファイルを作成しました。次に、new.md5ファイルをold.md5ファイルと比較して、ダウンロードまたはアップロードプロセス中にファイルに変更がないことを確認したいと思います。このスクリプトはハッシュ値を確認する必要があります。

完全なスクリプトが必要です。

答え1

ディレクトリ以外のすべてのファイル検索を使用するには、findディレクトリを消去するテストを使用してください。

find -H /bin ! -type d -exec md5sum {} + >sum.md5

これはmd5sum、ユーティリティディレクトリの提供を回避しながら、シンボリックリンクを含む可能な限り多くのファイルに対して一括実行されます(警告を表示)。

この-Hオプションを使用するfindと、コマンドラインで提供されているすべてのシンボリックリンク、つまり/binシンボリックリンクであることを確認できます。

計算されたチェックサムを確認するには、を使用しますmd5sum -c sum.md5

答え2

コマンドはすでにサブディレクトリにありますが(リンクでない場合は以下を参照)、通常のファイルのみを返すように明示的に指示している/binため、リンクやその他の非正規ファイルをスキップします。findそれは-type f私の意味です。からman find

   -type c
          File is of type c:

          f      regular file

すべてを見つけるには、以下を削除してください-type

find /bin/ -exec md5sum {} + >>sum.md5

注:シンボリックリンクを実行している場合は、/最後に:が/bin/あります(通常は最新のLinuxシステムと同様/bin)。/usr/binこれがなければ、コマンドはシンボリックリンク自体(/bin)のみを返し、サブディレクトリにドロップダウンしません。

後でこれらのチェックサムを確認するには、次の手順を実行します。

md5sum -c sum.md5 

関連情報