手順が煩雑であり、個人的に依頼を受けるケースが出てきたため、下記手順によるデータ復旧をランサーズにて承ります。
詳細及び依頼される方はこちらのページをご覧下さい。
ハードディスクデータ復旧サービス↓
https://www.lancers.jp/menu/detail/138614
手順メモ(2020年5月13日更新)
SystemRescueCDからdd rescueで新しいHDDにデータをコピー
コピー後、パーティションを認識しないならPartition WizardのPartition Recovery Wizardで復旧。
この段階で元通りのファイルが全て見えていれば終了。
あったはずのファイルがなくなっている場合、
チェックディスクをかける前にまずは、可能ならば
PhotoRecもしくは
DiskDigger、もしくはファイナルデータでクラスタスキャンをかけ、ファイルを
別HDDに取り出し。
その後、復旧が完全じゃない時(インデックスエラーが生じている時)Chkdskを/bオプションを付けてかける。
更に、アクセス権限の問題でエラーが起こる場合はアクセス権限を付与する。
それでも隠しフォルダになっている場合は、隠しフォルダとシステムで保護されたファイルを表示するように設定する。
拡張子がおかしい場合は極窓で直す。
以下詳細メモ
SystemRescueCDでHDDを復旧する際は、誤操作を防ぐため他のHDDを繋がないほうが良い。コネクタを外すのが面倒ならBIOSで該当以外のHDDをDisableにすると良いと思う。
2TB以上のHDDを認識しない時、壊れたHDDを認識できない時は、外付けケースに入れて繋ぐと認識する事がある。
ノートパソコンなどでCDドライブがなく、USB端子も足りない場合、SystemRescueCDのISOファイルをRufusを使ってUSBメモリに焼き、USBブートで立ち上げたら、"Boot SystemRescueCd and copy system to RAM"を選択し、SystemRescueCDをメモリ展開してから使う。(下記画像の上から2番めのオプション)
こうすれば、SystemRescueCDが立ち上がった後SystemRescueCDのUSBメモリを抜いて、修復したいUSBメモリやHDDを接続することが出来る。
SystemRescueCDはブートオプションでGUIを選択できる。
修復元、修復先のHDDの確認
cat /proc/partitions
ddrescueの際、
ログファイルの保存用に、USBメモリーをマウントしておくと良いと思う。
root@sysresccd /root % mkdir /mnt/usb
root@sysresccd /root % mount /dev/sdc1 /mnt/usb
ログを出力しながらddrescueを行う場合
# ddrescue -d -f -r1(リトライ回数指定) -v /dev/sdb(壊れたHDD) /dev/sda(新しいHDD) /mnt/usb/dd.log
sda1 sdb1などとパーティションごとにやるより、HDD全体ごとバックアップしたほうが面倒が少ないと思う。特に容量の違うHDDにバックアップする際。
リトライ回数は2か3でいいと思う。
2TBHDD以上のHDDを接続する際は、PCのBIOSが対応してるか確認が必要。3TB以上は要注意。非対応なら古いHDDに合わせた容量のHDDを買ったほうが面倒が少ない。
Windowsのcygwin上でもddrescueは動くが、WindowsがHDDを認識しないと使えない。(ドライブレターが付く状態じゃ無いと使えない)
Windows上でHDDを認識しなくても、SystemRescueCDでは認識することが多いので、そちらを試したほうが良いと思う。
HDDの損傷が酷く、パーティションコピーがいつまで経っても終わらない場合はCtrl+Cで中断できる。その場合、その部分までのファイル修復を試みる。(ddrescueはHDD内周から外周に向けてセクタ情報を読み取るが、基本的にHDD外周に行くほど復旧率は低くなり、ddrescueで"time since last successful read:○d○h○mがどんどん長くなるにつれて、それ以降のデータ復旧成功率は低くなると思われる)
この後、ハードディスクのコピーが終わったらWindowsで起動し、認識を試みる。
しかし、大抵の場合パーティションを認識しない。これは、パーティション情報が破損しているためでこの場合パーティション復元ソフトで復元を試みる。
パーティション復元にはPartitionWizardを使うが、現在その機能が有料となっているため旧バージョンを使う。PartitionWizard7.5ではパーティション復元機能がフリー版で使える。
もしくは、フリーソフトのTestdiskを使う。(未検証)
https://www.cgsecurity.org/wiki/TestDisk_JP
「TestDisk」の使い方
https://pctrouble.net/software/testdisk.html
その後、ドライブレターをつければWindows上で認識するが、ファイルが見えない場合、まずはPhotoRecもしくはDiskDiggerでクラスタスキャンを掛け、別HDDにファイルの復元を行う。その後、CHKDSKコマンドをかける(/bオプションを付ける)。
CHKDSKだけでほぼすべてのデータが戻る場合もあるが、CHKDSKは不可逆的な書き込みが行うため、できればクラスタスキャンで別HDDにデータの退避を行ってからCHKDSKでインデックスエラーを修正し、ファイルを見える状態にしたほうが良い。
復元するハードディスクのドライブレターがEドライブの場合、コマンドは下記のとおりになる。
chkdsk e: /b