久しぶりに古いPCを起動してみるとハードディスクの調子が悪くて途方にくれることがあります。
そんな時の症状のひとつがファイルやフォルダは見えているのに、開こうとするとハードディスクからカタカタ音がしてマイコンピュータが反応しなくなる症状です。しばらく待っていると、「CRCエラーで読み込めません」などといったメッセージが表示されることがあります。
こんなとき有料ツールを使ってデータを復元する方法が多くのWebページで解説されていますが、Windowsの標準ツールでも十分にデータを救出できる可能性があります。そんな標準ツールのひとつが robocopy です。
注意
以下で説明する方法はかなりの負荷がハードディスクに掛かるので、障害が悪化する可能性があります。本当に重要なデータの場合は無理に自分で復旧しようとせず業者に依頼することをオススメします。悪化しても責任は負えません。
はじめに
robocopyはサーバーのバックアップ用途のツールで、ファイルのコピー動作を様々なオプションでコントロールできます。その中に読み取りエラーが起きた時の再試行回数を指定できるオプションがあるのです。
冒頭で挙げたCRCエラーは、ハードディスク内の円盤からデータを読み取ったところ、そのデータが破損していた時に生じます。これがよく発生するのはハードディスク内の円盤にキズがあるため、正しくデータを読み出せない場合です。CRCはこういった読み取りエラーを検出するためにディスクに書き込まれており、データを正しく読み取れたか判定することができます。
キズがあるからもうだめなのかというとそんなことはありません。CDやDVDに傷があっても、プレーヤーがカタカタ音を立てながらなんとか再生できた経験をお持ちの方は多いと思います。同じようにハードディスクの場合でも、何度も読み取りを繰り返すことで偶然読めることがあります。
robocopy はエラーが生じたときに自動で再読み込みをすることができるため、データの読み取りが偶然成功する可能性に賭けて、データの救出を目指すことができるのです。
robocopyによるデータ救出方法
以下では、
- 障害が発生して救出したいフォルダを D:\error
- データの待避先を E:¥backup (ここにあるファイルは削除されます)
として説明します。当然、E:¥backup は D:\error とは異なるハードディスクに置くようにしましょう。そうしなければ障害が悪化した時に、救出したデータも失われてしまいます。
実行方法
手順1. スタートメニューからコマンドプロンプトを開きます。Windows 7 ではアクセサリの中にあります。あるいは「コマンドプロント」や 「cmd」とスタートメニューの検索ウィンドウに入力すれば出てきます。Windows 10でも同様です。
手順2. 以下のコマンドを実行するとエラー発生時に5回再試行しながらコピーします。e:\backup に関係のないファイルがあると削除されますのでご注意ください。ログは c:\backup.log に出力されます。
C:\Users\myself> robocopy d:\error e:\backup /mir /tee /r:5 /log:c:\backup.log
ここでのオプションの意味は
- /mir d:\error と e:\backup を同一の構造にする。よって、e:\backup に関係のないファイルがあると削除される
- /tee ログファイルと同時に画面上にも進捗を出力する
- /r:5 読み取りの再試行回数。ここでは5回
- /log:c:\backup.log ログファイルの保存場所を指定。ここでは c:\backup.log
c:\backup.log を確認するとコピーが成功したか判断できます。もしエラー後に再試行した場合は、以下のように記録されます。
I/O デバイス エラーが発生したため、要求を実行できませんでした。
30 秒間待機しています… 再試行しています…
もし、5回のエラーが発生してしまい中断した場合は
I/O デバイス エラーが発生したため、要求を実行できませんでした。
エラー: 再試行が制限回数を超えました。
などとなり、そのファイルはスキップされます。
失敗した場合の再実行方法
エラー多発によってスキップされてしまったファイルを救出したい場合は、再試行回数を100回などに増やして再実行すると成功することがあります。その際、robocopy はファイルの更新日とサイズが同じであればコピーを省略するため、意識せずに再実行しても問題ありません。ただし、状況が悪いドライブでは更新日を読み取るのにも時間が掛かってしまう場合があります。また、負荷が掛かってしまい状況を悪化させるかもしれません。その場合は、成功したフォルダは除外して一部分のみコピーするようにすると、実行時間も短くなり、またドライブへの負担も少なくなるのでオススメです。
おわりに
この記事ではハードディスクからデータを読み出せない時に robocopy でデータを救出する方法を説明しました。せっかく溜めていたデータが読みだせないのは悲しいですよね。ぜひ諦めないで救出に取り組んでください。