私は前に試しました
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