文系学生でも出来る、ubuntuとtestdiskを使ったHDDからのファイルサルベージ

GW、頭から風邪をひいて寝込んでいた。
寝込んでいる最中、僕の大事なHDDに溜め込まれた動画コンテンツを消化すれば良いか、と前向きに考えていたのだが、悪いことは重なるもので、寝込んだ日の夜にはHDDがクラッシュした。


で、ようやく元気になったので、これを書いているまさに今、お亡くなりになったHDDからデータを復旧中である。
不精者でバックアップをとらない*1僕は、次にまたHDDが飛んだ時に困らないように、やることをメモしておく。
なお、表題にある通り僕はコンピュータに疎いとされる文系の人間なので、専門用語や概念等は大いに間違っている可能性がある。注釈等含め、僕が友人に説明する感覚で書いている。なので、ここに出てきた単語を元に、googleを駆使して復旧するのが良いと思う。
この通りにやって復旧出来なくても、知らない。



コンセプト

Windowsは起動するけど、データを入れてたHDDが読めなくなった!
とにかくなんでも良いから、オイラの貴重なエロ動画100GBとその他のファイルを壊れたHDDから取り出したい!
ただしお金は無いからデータ復旧ソフトとか買えないよ!
エロ動画をDLする知識はあるけど、パソコンは詳しくないよ!
っていう人が、自力で何とか(可能な限り)壊れたHDDから大切なファイルを取り出すことが目的です。
合コンで忙しい文系学生さん向けに、一番最後にオススメが書いてあるので、忙しい人はそこまで読み飛ばして下さい。

用意するもの


まず最初に。HDDイメージ作成

何はともあれ、HDDイメージを作成しておく
→dd for Windowsをダウンロードしてきて使う
(なぜlinuxを使わずあえてWindowsでddコマンドをやらせるのか?
→文系にとってlinuxなんて見たことも聞いたこともない危険物だからオススメ出来ません)
dd for Windows(http://www.chrysocome.net/dd)*4を使って、Windows上でHDDイメージ*5を作成しておく。
要するに、今までバックアップを取ってこなかったツケとして、ここで最新のバックアップをまるごとイメージファイルとして作っておきましょうということである。後の祭りかも知れないけれど。


コマンドプロントからコマンド入力するので、ここで躓かれるとキビシイのだが、頑張って呪文を暗記するつもりでトライして欲しい。 


と思ったが、最新バージョンのtestdiskでは、HDDイメージを作成する機能がある模様。
本来、ここでdd for Windowsを使用して、HDDイメージファイルを作成するべきなのだが、testdiskで行った方が遥かに簡単なので、testdiskの使い方のみにする。まぁ、分かる人はddコマンドでイメージファイル作った方が良いですよ、ってことで。大体ddコマンド分かる人はこんなところ見る必要無いと思うけど。


というわけで、dd for Windowsについては忘れて、おもむろにtestdisk(http://www.cgsecurity.org/wiki/TestDisk)をダウンロードしてくる。

  1. 解凍
  2. winフォルダのtestdisk_win.exeを実行
  3. 最初にlogファイルを作成するか訊ねられるが、文系学生にlogなどという概念はないので、「No log」でGo!
  4. 接続されているHDDが表示されるので、該当HDDを選んでEnter!
  5. 文系学生は稀に酔狂で、MacWindowsの違いも分からずMacを買っていたりするけれど、今回はWindows対象なので「Intel」を選ぶ。インテルハイッテルじゃなくても、WindowsならIntelを選ぶ
  6. 「Advanced」を選ぶ
  7. 「Create Image」を選択
  8. どこにイメージファイル作るか訊ねられるので、十分に空きのあるHDDを指定する*6
  9. 最近の大容量HDDだと、平気で10時間くらいかかるので、つけっぱなしにして待つ



というように、まずイメージファイルを作って置くことで、「この後HDDの復旧に失敗しても、最悪イメージファイルに書き出されたファイルは復旧可能」という状態にしておく*7
でも、イメージファイルの作成にとにかく時間がかかるので、推奨はしないが後回しにして先に次のステップから始めるという手もある。その場合、イメージファイルという保険がなくなるので、データを取り出せる確率はガクンと下がるけど。
さらに、壊れたHDDというのは基本的にアクセスすればするほど、より被害が広がる物なので、まず最初に丸々バックアップしておくというのは、多分大事*8
後々のこと考えて、少しでも復旧率を上げたいなら出来上がったイメージファイル自体のバックアップも取って置きましょう。

testdiskで、パーティションを復旧

パーティションイカれてデータが読めないだけ
→testdiskのWindows版をダウンロードしてきて使う
(なぜlinuxを使わずあえてWindows版なのか?
→文系にとってlinuxなんて読み方も分からないキモイOSだからオススメ出来ません)
世の中にはtestdiskというすんごい便利なフリーソフトがあって、そんじょそこらで売られているデータ復旧ソフトなんか目じゃなかったりする。と当初は書いていたのだが、予定が変わって前の項目でもtestdiskについて書いてしまったので以下割愛。


で、既にダウンロードしてきたtestdiskを使って、今度はパーティションの復旧を試みる。
HDDを読み込めない原因の一つが、パーティションテーブルの不具合らしいのだが*9、testdiskはそれをバッチリ治してくれる。
使い方は簡単。ダウンロードは前述のurlから。

  1. 解凍
  2. winフォルダのtestdisk_win.exeを実行
  3. 文系学生らしく「No log」を選ぶ
  4. 接続されているHDDが表示されるので、該当HDDを選んでEnter!
  5. 文系学生は自分の使っているコンピュータがWindowsMacか分からないが、ほぼ9割以上Windowsだと思われるので、「Intel」を選ぶ
  6. 「Analyse」を選ぶ
  7. 「Quick Search」を選ぶ
  8. Vistaか? と訊ねられるので、Yes/Noを選ぶ。Vistaかどうか分からない人は、復旧を諦める
  9. Quick Searchで検索した結果が出るので、正しいパーティションかどうかチェックする
    分からなければ「p」を押すと、ファイルのリストが見られる。「q」で戻れる。
  10. このパーティションで正しいか確認したら、ENTER: to continueなのでEnterキーを叩く
  11. 確認したパーティションで正しければ、喜んで「Write」を選ぶ。そうでなければ「Deeper Serch」を選ぶ
  12. 「Deeper Serch」では、より深くパーティションの痕跡を探してくる。リストが表示されたら、やはり「p」でファイルのリストを見たり、セクタを見比べたりして、左右の矢印キーでパーティションを選択していく
  13. 最終的に、うまい具合に「Write」に辿り着ければOK。ただしミスは即死に繋がると覚悟する

とまぁ、ここまで書いて相当面倒な作業の気がしている。
特に、HDDのパーティションの概念をある程度理解していないと、無理な気がする。
注意すべき点は、HDDイメージを作成していない場合、「手に負えないな」と思った時点で決して「Write」は押さず「Quit」すること。「Write」してしまうと、救える物も救えなくなる。


っていうか、testdiskに関してはググれば使い方を解説したサイトが一杯出てくるから、そっち見た方がわかりやすい。webの先人に感謝しよう。
Advancedでディスクイメージが作れるのは、最近のバージョンからなのか、解説が見当たらなかったので、ここではそれだけ覚えておけば良いかもしれない。

(補足)testdiskでファイル取り出し

testdisk使ったら、「p」でファイルのリストは見えて、取り出したいファイルも見つけた!
→おめでとう。そのまま「c」を押して任意の場所にコピー出来ます
通常ならば、ここで次のステップに進むのだが、上のtestdiskを使って「p」を押してファイルのリストが見えた場合、そのファイルを取り出すことも可能である。
「p」でファイルリストを出した後、取り出したいファイル・フォルダを選んで「c」を押せば、そのファイル・フォルダを任意の場所にコピーすることが出来る。
ただし、これでファイルを取り出すのは骨が折れるし、日本語対応してないから日本語ファイル名のファイルは文字化けするし、必然的にHDDへのアクセスが増えて壊れているHDDが更に壊れる可能性が高いしで、あまりオススメ出来ない。
特定の1ファイルだけ取り出したいとかなら、最初にこれをやってファイルを取り出しても良いと思う。
そうでなくて、あくまでHDD全体の復旧を目指すなら、この作業はスルーして構わない。

(補足その2)photorecでファイル取り出し

testdiskじゃファイルが見えなかった! エロjpgファイルさえ取り出せれば良いのに!
→photorecという手もあります
おそらくtestdiskを落としてきた際に同梱されていたであろう、photorecというソフトも、強力である。

  1. 「testdisk_win.exe」と同じフォルダに「photorec_win.exe」があるので、それを実行する
  2. testdiskと同じ要領で、ハードディスクを選んだり「Intel」を選んだりする
  3. パーティションを選ぶところで、「File Opt」を選ぶ
  4. 復旧したいファイルの種類を、上下左右の矢印キーで選ぶ(「X」が付いているのが、復元対象のファイル)
  5. フォーマットの種類は「Other」を選んで、「Free(使用されていない領域から検索)」か「Whole(パーティション全体から検索)」を選ぶ
  6. ファイルを書き出すディレクトリを選ぶ(デフォルトではphotorec_win.exeのあるフォルダ)
  7. Yesを押して、半日ほど放置する

ただし、ファイル名は復元されず、ディレクトリ構造は保たれず全てのファイルを同じディレクトリに吐き出すので、後の整理が大変である。
どちらかというと、最後の手段といった感じ。


testdiskと同じく、これも詳しく解説しているサイトがあるから、ここを読むよりググる方が良い。

dd for WindowsでHDDイメージファイルをHDDに

どうあがいても壊れてるっぽいから新しく買ってきたHDDにデータそのまま移したい
→ddコマンドを使って、HDDイメージから新しいHDDに書き込みます
(なんでわざわざイメージファイルにするの?
→本来testdisk等でいじる際にもイメージファイルの方が都合が良い。容量の許す限りバックアップ取れるし、何より後でmountしてファイル取り出すこと考えたらイメージじゃないと!)
testdiskでパーミッションをいじってもダメだった時は、ddコマンドを使って最初に作っておいたHDDイメージを、新しいHDDに書き込みする。HDDイメージを作成していなかった場合は、この段階で作成。ただしtestdiskで色々いじくった後だとディスクイメージも正確に出来なかったりするので注意。
作業としては、cdコマンドでdd.exeのあるフォルダに行って、dd if=〜 of=〜 とかのddコマンドを打ってHDDイメージの中身を、そっくりそのまま新しいHDDに移すわけである。
当然ながら、コピー先のHDDは、壊れたHDDと同じか、より容量の大きい物でなければならない*10


まずはコマンドプロントを立ち上げる。

C:\Documents and Settings\name>
とか出てくると思う。
ここで、dd.exeの置いてある場所が、dドライブのddというフォルダの中だったら、

C:\Documents and Settings\name>cd /d d:
D:\>cd dd
D:\dd>
と、いう感じでディレクトリを切り替えれば良い*11
詳しくは、「cd コマンドプロント」とかでググって欲しい。


で、後は

dd if=d:\backup\hogehoge.hoge of=\\.\e:
とか打って、HDDイメージをドライブに書き込めばお終い。
とりあえず、if=(イメージファイルのある場所) of=\\.\書き込むドライブ と覚えておけば良い。
これも詳しくは、「ddコマンド」とかでググって頑張るの前提。

ここまでダラダラ書いたけど、最初からlinux使えばええやん

新しいHDDに書き込んだけど、それでも読めないんですけど
→最早Windowsで出来ることはやり尽くしたので、最後にもう一度新しいHDDに対しtestdiskでパーミッション復旧を試みてもダメなら、諦めるか、復旧ソフトを買ってくるか、復旧業者に頼むか、linuxを使いましょう*12
(なんで最初からlinux使わせないの?
→文系にとって、パソコンと言えばWindowsであり、百歩譲ってMacであり、linuxなんてのはキモオタ専用の意味不明で存在自体認知されていない(中略)だからです)
ここまで、徹底的にWindowsで何とかする方法を書いてきた。
でも、最初からlinuxでも使って、ddコマンドでそのまま新しく買ってきたHDDに書き込んだり、ディスクイメージをマウントしてファイルをそのままコピーした方が、数倍楽だと思う。
というわけで、今僕は至急必要なファイルだけWindows版のtestdiskで取り出して、後はubuntuをUSBブートさせて、ディスクイメージをマウントして新しく買ったHDDに必要なファイルをコピーしてます。
なぜubuntuなのかというと、他はロクに使ったこともなく、手元に起動イメージがあるのがubuntuだったというだけの理由。
とりあえず、今すぐ(http://www.ubuntulinux.jp/)からCDイメージダウンロードしてきて、ubuntu使いましょう*13
上に書かれているような面倒なことしなくても、mountでディスクイメージマウントして、新しいHDDに必要なファイルをコピーで、大抵上手くいきます。日本語対応でファイル名も化けないので安心!
大丈夫。僕なんてコマンドはブラウザで検索しながらじゃないと殆ど分からないけれど、GUIGoogleとWeb上の人達のおかげで何とか使えています*14
まぁそれでもHDD復旧は面倒くさいけど。


ようこそlinuxへ!*15

HDDが故障したとき、パソコンに詳しくない人が本当にまず最初にやるべきこと

身の回りのパソコン詳しい人にお願いする。
お願いする前に、上の文章をさっと流し読みして、「必ずしも復旧出来るとは限らない」「物凄い手間と時間がかかる」ということを理解した上で、お願いしましょう。
僕なら、一万円貰ってもやりたくないと思います。

*1:取るほどのデータも持っていない

*2:ここで言うサイズとは容量のことであって、決して、2.5インチHDDが壊れたらそれより大きい3.5インチHDDを用意する、という意味ではない

*3:もちろん他のディストリビューションでも全然okです

*4:DDforWindowsとは別物なので注意。ググるとこっちが上に出てくると思う。こちらはCFやUSBメモリ等のリムーバブルメディア限定で、HDDのイメージファイル化をするソフトではない

*5:簡単に言うと、HDDを丸々一つのファイルにして保存しておくということ

*6:デフォルトだと、testdiskのあるフォルダが選択されている

*7:必ずしも全てイメージファイルに書き出されているとは限らない。壊れたセクタにあったファイルは、取り出せないと思っておいた方が良い

*8:端的に言えば、これ以降の作業をやればやるほど、HDDがより物理的に壊れて取り出せるデータが少なくなる可能性が高い

*9:要するに、HDDを区切ってる「仕切り」の情報がおかしくなって、部屋がゴチャゴチャになってデータが読み出せなくなっている状態

*10:中身をそっくりそのまま移すので、新しいHDD余った分は空白となる

*11:9x系じゃなければ「cd /d d:\dd」と一発で切り替えられたと思う

*12:ここまでやってダメだったら、市販の復旧ソフトでもダメだと思うけれど

*13:CDブートだけを考えたら、KNOPPIXの方が良いかもしれない

*14:これは嘘。興味本位で触った後は投げっぱなしだ

*15:結局これが言いたかっただけである