HFS+のHDDを Windows XP マシン + Debian で復旧した時の備忘録

友人から「USB接続のHDDをパソコンにつないでもうんともすんとも言わなくなった」とSOSがきた。

とりあえずパソコンとHDDを持ってきてもらうと、USB接続、電源はバスパワー供給のHDDで、HFS+でフォーマットしてある。パーティションテーブルのあたりと、多数の不良セクタが原因だろうと予想がついたので、中のデータは救出できそうだった。よく見てみると、USB差し込み口のピンが折れかかっていて、電源供給が不安定になるようだった。これが一因だろう。落としたりしたのかもしれないけど。

HDDからのデータの吸い出しにはTestDiskという強力なユーティリティーがあって、FATとかNTFSなんかであればパーティションテーブルを書き換えてしまったりできるのだが、HFS+にはそのままでは対応していないことが判明した。TestDiskにはディレクトリ構造などを保持したままファイルを吸い出す機能も付いているのだが、これもHFS+だと上手くうごいてくれない。ディレクトリーの構造を無視してひたすらファイルを吸い出す方法は可能だったが、ディレクトリのツリー構造はなくなる上に、ファイル名まで変更されてわけがわからなくなるので、これは避けたい。

ほかにも、WindowsからHFS+のパーティションを覗くソフトウェアとして、HFS Explorer がある。これでHDDを除いてみると、普通にファイルのコピー等ができる。しかしNTFSでフォーマットされているNASにHFS+でフォーマットされているHDDのファイルをコピーすると、ファイル名の変更の必要が頻発してややこしい(ファイルシステムごとの使える文字・使えない文字の差に起因している)。ずっとパソコンの前に張り付いてもいられないし、これも避けたい。

と、いろいろ眺めていると、TestDiskには、なんとディスクイメージとしてデータを吸い出す機能が付いていることがわかった。どうも最近のバージョンについているらしい。これはちょうど dd_rescue と同じものだ。これはいける!というわけで、これを使ってとりあえず手元のNASに640GB分のディスクイメージを救出した。

(手元の Debian Squeeze のノートPCで dd_rescue が一番手っ取り早いと思われたのだが、NAS以外に読み出した640GBものデータを保存できる場所がこの時点ではなかったし、NASをDebianにマウントするのも手間がかかりそうだったので、Windows XP からTestDiskを動かした次第。)

さらっと書いたけど、640GB吸い出すのに30時間くらいかかったんじゃなかったかな。速度は50Mbpsくらい。不良セクタも結構出てきた。それと、USBバスパワー供給でファンなどがついていないので、新書2冊で下駄を履かせて下側も通風するようにして排熱してあげないといけなかった。そして、電源の接触が不安定なので、USBのプラグを微妙に角度をつけて差し込んであげないと、USB HDDに電源が供給されない。

時間はかかったものの、ディスクイメージが吸い出せたので、まずは万々歳。ディスクイメージ救出したら、次のステップはファイルを吸い出すこと。せっかくディスクイメージを吸い出した所だが、HDDの中を直接覗いたりできるので、そこから復旧・・・しかし電源が不安定なので大丈夫かな、というのは、当然ながら不安だ。しかし、よくみたら、HFS Explorer はHFS+のディスクイメージの中身も覗いて、ファイルをコピーできるのでした。

吸い出して送り込むHDD(USB接続だが電源は独立した外付けHDD)は新たに友人が購入してきたので、Mac Drive の試用版でHFS+にフォーマット。手元のDebianマシンにマウントして、それを Samba で Windows XP のマシンからアクセスできるようにした。

(Debian にNASをマウントして dd_rescue でディスクイメージごとコピーして、その後にパーティションテーブルを書き換えることも考えたけど、やはり面倒そうなので HFS Explorer のお世話になった。)

ここまでできたら、あとはNASに置いてあるディスクイメージから、HFS Explorerを使い全ファイルを吸い出して、そのまま新しいHDDに送り込んであげればよい。その作業にはやはり36時間近くかかった。100Mbpsだとして640GB分だと15時間近くかかる計算なので覚悟していたけど、やはり時間がかかった。

この手順で、ほぼ全てのファイルを復旧できた。日本語ファイル名になっていたもののごく一部(60個くらい?)が復旧できなかったけど、ぜんぜん重要なモノではないということで、これらは諦めてもらいました。復旧できたということで、めでたしめでたし。