コピーやダウンロードしたファイルのチェック方法、MD5での比較

PCソフト
この記事内には広告が含まれています。
(PR)

ファイルのコピーは、日常的に行っていますが、コピーしたファイルが元のファイルの完全な複製だと信じてチェックなど行いません。

ファイルをコピーする場合、まず、コピー先にコピー元と同じサイズの入れ物が作られ、そこに内容が書き込まれるため、プロパティを見てもサイズが同じなので、コピーに成功しているのかわかりません。

ファイルが正しいかという問題

ビデオファイルの場合は、頭の部分が再生出来るので安心していても、いざ編集ソフトに読み込ませようとすると、途中や最後の部分が壊れていて、編集ソフトに読み込めないということも起きます。

また、Windowsに標準搭載されたZIPファイルへの圧縮と展開は、圧縮は問題無いのですが、展開は圧縮されているファイル数が多かったり、サイズが大きかったりすると、正しく展開できません。10,000ファイル程度を圧縮したZIPファイルを展開したところ、100ファイル以上が壊れて展開されました。

このような場合、往往にして元のファイルは、既に消したり、再入手が不可能な状態であることが多いでしょう。

実際に、そのようなことに遭遇したため、オリジナルが残っているファイルについて、比較を行ったところ、結構な割合で失敗していました。ネットワークの品質や、USBの問題、SATAの問題など、いろいろ考えられますが、問題の起きていない別の2台のPCを、LANケーブルで直結して行ったコピーでも失敗は発生しました。

原因がわからないため対策がとれず、以後、重要なファイルについては、チェックするようにしています。最初は、コマンドプロンプトの「FC」コマンドや、フリーの比較ソフトを使っていましたが、時間がかかることと、双方のファイルが同時にオンラインでなければならないことが難点でした。

ハッシュによる比較は、ハッシュを計算してしまえば、双方が同時にオンラインである必要はありません。NASや外付けHDDなどは、計算が終われば電源を切っても構いません。

ハッシュによるチェック方法はいろいろありますが、ここではフリーソフトのFastHashを使います。

 

準備

FastHashは古いソフトですが、Windows 10でも使用出来ます。ただし、操作方法によっては急に終了するので、比較するファイルが多いと、ここに記した以外の方法で比較する場合は注意が必要です。

FastHashはいろいろな種類のハッシュを高速に計算出来ますが、ここではよく使われる「MD5」を使用します。

インストーラーは無いので、適当なフォルダーに展開し、FastHash.exeを実行します。

メニューの「ハッシュ」から「MD5」だけチェックし、残りの項目のチェックは外します。

FastHash_01a

メニューの「表示」から、

  • フォルダーを相対パスで表示する
  • ハッシュリスト読込確認ウインドウを表示する

をチェックをします。

  • ハッシュを小文字で表示する
  • グリッドラインを表示する

これらは、好みでチェックします。小文字の方が、数字と英字を間違え難いでしょう。

FastHash_02a

フォントの設定は、見やすいフォントに設定します。桁がずれないように、プロポーショナルフォントではなく、固定幅フォントを指定します。

FastHash_04

メニューの「オプション」から、

  • サブフォルダも取得する
  • 登録時に自動的に開始する

をチェックします。

FastHash_03a

以上で準備は完了です。黄色で示した部分は、フォルダー階層上に同一ファイル名が存在する場合は重要です。

チェック方法(ファイル数が少ない場合)

ファイル数が少ない場合は、FastHashのウインドウに、コピー元ファイルと、コピー先ファイルを交互にドラッグアンドドロップします。

正しくコピーされていれば、「MD5」の列の上下の文字列が等しくなります。

確認はすべての桁を比較する必要はありません。ハッシュは、ファイル内容が少しでも異なる場合は、大きく値が変化するため、MD5の最初の数桁(1の部分)を確認すれば十分です。心配なら、最後の部分(2の部分)、サイズ(3の部分)を追加で確認すればよいでしょう。

FastHash_05a

チェック方法(ファイル数が多い場合)

ファイル数が多い場合は、まず、コピー元またはコピー先のどちらかのハッシュを計算して、結果をファイルに書き出します。次に、もう片方のハッシュを計算します。最後に書き出した結果ファイルを読み込み、比較します。

比較は、ファイル名単位で行われます。そのため、同じファイル名があると比較出来ません。準備のところで指定した設定により、ファイル名にパスが付加されるので、同一ファイル名でもパスが違えば区別されます。

ただし、計算するフォルダーの指定には注意が必要です。

フォルダーをドラッグアンドドロップした場合、そのフォルダー名は無視されて、そのフォルダーに含まれるフォルダーとファイルを指定したものと判断されます。

このようなフォルダー構造の場合、「BBB」と「CCC」をドラッグアンドドロップすると、フォ
ルダー名が無視されるので、その下のファイルが直接指定されたこととなり、同一ファイル名があることから比較に失敗します。

このようなフォルダー構造の場合は、必ず、「AAA」をドラッグアンドドロップします。

Folder_01

実際の操作ですが、まず、コピー元、または、コピー先のフォルダーをドラッグアンドドロップします。

フォルダーを正しく指定出来ていることを「フォルダ名」の列で確認します。計算が終わるとステータスバーが「100%」となります。

FastHash_06a

計算が終わったら、メニューの「ファイル」から「ハッシュリストを出力」をクリックします。

FastHash_07a

「出力ファイル名」を任意に指定し、「出力形式」は「WinCRC」だけをチェックして「OK」をクリックします。

FastHash_08

ハッシュファイルが書き出されます。「OK」をクリックしてダイアログを閉じます。

FastHash_09

次に、ウインドウ内で右クリックし、コンテキストメニューから「すべて削除」をクリックして計算結果を消します。

FastHash_10a

コピー元、または、コピー先の計算していない方のフォルダーをドラッグアンドドロップして、計算が終わるのを待ちます。

計算が終わったら、メニューの「ファイル」から「比較」をクリックします。

FastHash_11a

「ハッシュファイル」に先にハッシュリストを書き出したファイルを指定します。「検証するファイルorフォルダ」と「サブフォルダも取得」は、そのままにして「OK」をクリックします。

FastHash_12

すると比較結果がこのように表示されます。

FastHash_13

確認するのは、ステータスバーのこの部分です。「△、×、-」の横の数字が「0」以外なら、コピーに失敗しているファイルが存在することになります。

FastHash_13a

例えば、このようになります。

FastHash_14

この例では3個のファイルに問題があります。ハッシュが違う場合は、まず、ウインドウの下半分で、問題のあるファイルを特定し、ファイル数が少ない場合の方法で問題のあるファイルだけを、もう一度比較します。ハッシュを計算している段階で、エラーが発生している可能性があるからです。再度比較しても異なる場合は、コピーをやり直します。

FastHash_14a

比較するファイルのサイズや数、パソコンのCPUやメモリーにより計算速度や計算可能ファイル数は変わります。

32GBメモリーのマシンでは、60万ファイルのMD5計算は行えましたが、比較は出来ませんでした。MD5計算は出来ましたので、結果を書き出し、比較をExcelで行いました。FastHashによる計算は、計算されるファイルの順序が同じになるとは限らないため、ファイル名でソートしてからサイズとハッシュを比較します。Excelならそれらが簡単に行えるためです。

まとめ

手順は面倒に見えますが、慣れてしまえば簡単です。コピーは失敗してもオリジナルが存在しますから、再度コピーすれば済みます。しかし、ディスク間の移動や、NASへの退避など、オリジナルを消す場合は、面倒でも、確認しておいた方がよいと思います。

この手の対策は、バックアップと同じで重要性は理解しても、実際に自分自身が被害に合わないと実施するのは難しいでしょう。そのため、こういう方法もあることを、記憶の片隅に留めて
おくだけでもよいと思います。

タイトルとURLをコピーしました