ハッシュ値でファイルの変更を検知!

データが想定される正しい状態であるかを確認することは重要なことです。データの改ざんやバックアップが正しく取得できているか確認する手段を確保するため、ハッシュ値を使用してファイルの変更を検知する方法を整理します。

はじめに

Microsoft社提供のfcivコマンドを使用して、ファイルのハッシュ値を取得し、ファイルの変更を検知可能にします。

fcivコマンドのダウンロードとインストール

・fcivコマンドのダウンロード
マイクロソフトのホームページから、fcivコマンドのインストーラをダウンロードします。
download_fciv.png
・fcivコマンドのインストール
ダウンロードしたインストーラをダブルクリックして、fcivコマンドをインストールします。使用許諾を読んで、「Yes」ボタンをクリックします。
install_fsiv_001.png
fcivコマンドをインストールするパスを入力します。fciv.exeが保管されます。保管場所は、後述の手順でPath環境変数を設定する必要があります。
install_fsiv_002.png
・fcivコマンドのインストール先を”path”環境変数に追加
コントロールパネルの「システム」から、「システムの詳細設定」を選択します。
install_fsiv_003.png
「環境変数」ボタンをクリックします。
install_fsiv_004.png
Path環境変数を選択して、「編集」ボタンをクリックします。
install_fsiv_005.png
fcivコマンドを保管したパスを入力して、「OK」ボタンをクリックします。
install_fsiv_006.png

ファイルのハッシュ値の取得

fcivコマンドでファイルのハッシュ値を取得します。
<コマンド例>※ハッシュ値は、md5とsha-1の双方を出力しています。片方でも問題ありません。
============================================================
fciv.exe -add C:\local\data -r -both > C:\local\data\checksumdb\local.dat

前回のファイルのハッシュ値のバックアップ

前回のファイルのハッシュ値をバックアップします。
<コマンド例>
============================================================
copy C:\local\data\checksumdb\local.dat C:\local\data\checksumdb\local.dat.1

ファイルのハッシュ値の再取得

fcivコマンドでファイルのハッシュ値を再取得します。
<コマンド例>
============================================================
fciv.exe -add C:\local\data -r -both > C:\local\data\checksumdb\local.dat
■前回のファイルのハッシュ値との比較
fcコマンドで前回のファイルのハッシュ値と比較します。
<コマンド例>
============================================================
fc /n C:\local\data\checksumdb\local.dat C:\local\data\checksumdb\local.dat.1

備考

fcivコマンドは多機能で、xmlファイルに結果を書き出しておき、その結果と現状を比較することもできます。存在するファイルの変更チェック結果はとても見やすいですが、、ファイルの有無が発生する場合は、エラー出力発生し結果の見やすさが損なわれます。

利用上の考慮点

・バッチ処理のため、リアルタイムに変更を検知することができません。週に1回等、定期的な実行によって変更を確認する方法になります。
・対象の全ファイルにアクセスするため、対象ファイルが増えるとハッシュ値の取得や比較には時間がかかります。

おわりに

チェックサムを使用してファイルの変更を検知する仕組みは、バッチ処理で定期的な実行をする必要があるため主にサーバで使用されますが、個人や小グループで使用する場合でも、共有フォルダのデータ変更の検知やバックアップの検証には大きな力を発揮します。

関連記事

  1. ハッシュ値でファイルの変更を検知!
  2. ハードディスクにバックアップを取得!
DMMmobile ワイモバイル

コメント記入欄

※メールアドレス(任意入力)は非公開です。コメントはお気軽にどうぞ!

内容を確認して、「コメント送信」ボタンを押してください。

post date*

※日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)