
まあ、変更されたことを確認するために定期的にハッシュする必要があるかなり大きなファイル(〜200 MB)があります。
問題は、このファイルに変更される可能性があるため、無視する必要がある2つの小さなフィールドがあることです。これらの各フィールドには、既知で固定されたオフセットとサイズがあります。
私は3つのcmpコマンドを使ってこれを行いましたが、定期的に実行する必要があるので、できるだけ効率的な方法でやりたいと思います。また、ファイルのバックアップを保存する必要があることも問題になり、比較のためにハッシュ値だけを保存しておく方が良いでしょう。
これまでに私が得た最も近いものは次のとおりです。
dd はファイルの先頭から md5 までのオフセットを読み込みます。
dd は、最初のフィールドの終わりから 2 番目のフィールドの先頭まで読み込みます。 |
dd は、2 番目のフィールドの終わりから md5 ファイルの終わりまで読み込みます。
単一のハッシュ値を取得できるように、3つのddコマンドの出力を1つのmd5sumインスタンスにリダイレクトする方法はありますか?一時ファイルに3つのddコマンドを作成してからハッシュすると、多くのI / Oが生成されるため望ましくありません。私はこれをできるだけ効率的にしたいです。
どんなアドバイスもありがとうございました! !
答え1
本当にデータをハッシュするには、サブシェルを使用してください。
( dd_1 ; dd_2 ; dd_3 ) | md5sum
それ以外の場合は、Hojatの答えを使用することをお勧めします。フラグメントごとにハッシュし、これらの「サブハッシュ」で作業を実行します。
答え2
3 つの md5 合計をファイルに追加し、そのファイルに別の md5 を作成できます。そのハッシュのいずれかを変更すると、最終テキストファイルのハッシュが一致しなくなります。
md5(1) と md5(2) と md5(3) を最終ファイル --> md5(final_file) にリンクします。