HDDのパーティションテーブルが消えてからのデータ復旧

先日デスクトップPCのデータ用HDDが吹っ飛びました。
原因は不明ですがデータは消えておらず、パーティションテーブルか完全に消えていました。
復旧に成功したのでその手順をメモっておきます。

問題推定

初めは何故データが消えたのかわからなかったため、その調査から始めました。
消えたのはデータ用HDDで、Windows本体は問題なく起動していたため、WindowsからHDDを見ると、
未フォーマット状態のディスクとして認識され、パーティションスタイルの選択から始まっていました。

HDDは数ヶ月前に新調したものであり、異音やエラーなどの問題も無かったため、物理的な可能性は薄いと考えました。
また、直前に大量にデータを書き込んでもいないため、データを削除した線も薄そうです。

さらに、一部のデータが読み込めなくなるのではなく、全データが一度に読み取り不能になったことから、
何らかの要因でパーティションが消えてデータが読み取り不能になり、
データ自体は残っているのではないかと考えました。

パーティションの確認

運良く手元にLinuxの起動ディスクがあったため、とりあえずパーティションがどうなっているかを確認しました。

手順としては以下のようになります。
なお、HDDがsdaにマウントされていると仮定します。

  • ddコマンドでHDDの先頭をコピーする
    ddコマンドはディスクからファイルやディスクにデータをコピーできるコマンドです。
    sudo dd if=/dev/sda of=/tmp/hdd count=100
    のようにすることで、sdaの先頭から100ブロック分を/tmp/hddファイルにコピーします。
  • hexdumpコマンドで中身を見る
    hexdumpコマンドはファイルの中身を16進数で出力します。
    hexdump /tmp/hdd

私の場合、hexdumpの出力が先頭50MBぐらい全て0だらけだったので、
パーティションが全て0埋めされて消えていました。

そのため、次にパーティションの復活を試みます。

TestDiskでパーティション復活

壊れたディスクはPBRにしていたため、MBRと比べて大変になる場合が多いらしいですが、
TestDiskを使うと特に問題なく修復できました。

詳しい使い方はこちら。
【TestDisk】について

私の場合、これでNTFSのパーティションを修復できましたが、
何故か書き込んでいないはずのWindowsディスクが壊れてしまい、
データと引き替えにWindowsが消えてしまいました…

幸いWindowsディスクには特に重要なデータを入れていなかったのと、
Macからデータを読み出すことができたために難を逃れました。

念のため、Windowsディスクは外して作業をした方がよさそうです。