「しまった」という時のためのext3undelLeverage OSS

ファイルやディレクトリを誤って削除してしまってもあきらめることはない。ext3undelには、できるだけ効率良くデータを復旧させるための素晴らしいツールがそろっている。

» 2008年07月15日 00時00分 公開
[Kurt Edelbrock,Open Tech Press]

 rmコマンドはデータを削除するためのパワフルなツールだ――が、ファイルやディレクトリを誤って削除してしまった場合にはそうとも言っていられない。しかしありがたいことにext3undelユーティリティを使えば、ext3ファイルシステム上で誤って削除してしまったデータを復旧することができる。ext3undelを使えば、ファイル名で指定したファイルを復旧させることもできるし、削除されたという印がつけられている全ファイルを復旧することもできる(ただしこの場合ファイル名は復旧できないため目的のファイルを見つけるためにファイルの内容を確認する必要がある)。

 ext3ファイルシステム上の各ファイルは、2つの部分から構成されている。1つは、ファイル名、容量、作成日時、アクセス日時などのファイルのメタデータで、inodeというUNIXのデータ構造の中に保存されている。もう1つの部分であるファイルの実際の内容は、別途ハードディスク上のデータブロックに保存されている。ファイルを削除すると、そのようなメタデータとデータブロックとを結ぶ情報が失われるので、ファイルについての情報とファイルの内容との対応関係が分からなくなる。ファイルが削除されるとinodeとデータブロックにはどちらにも「空き」という印がつけられて、OSは新たなデータを書き込む必要が生まれたときにそれらを使用できる。しかし言い換えればinodeとブロックには「空き」という印がつけられているだけで、まだ上書きはされていない状態なので、新たなデータが書き込まれるまでの間はデータを取り戻すことができる。なお、ext3undelでデータの復旧を新たなパーティーション上で行うことが重要なのはそのためで、ファイルシステムに対して何らかの変更が行われれば、復旧したいデータが上書きされてしまう恐れがある。その前に、削除されたデータブロックに「使用中」という印をつけて、inodeとデータブロックとを再び結びつける必要がある。

 このことは実際には複雑な作業で、この処理を行うための中心的な機能はext3undelが提供しているわけではない。そうではなくext3undelは、そのような重労働を行う別の幾つかのアプリケーションに対するラッパーだ。ext3undelには、gabi(get all back immediately;すべてをすぐに元に戻す)と、ralf(recover a lost file;紛失したファイルを復旧する)という2つの異なるコマンドがある。

 gabiは、PhotorecForemostという2つの復旧プログラムを利用してすべてを復旧する。PhotorecやForemost自体ではなくext3undelを使用することの利点は、時間だ。つまり作業を自動化して設定作業などをなくすことで、ファイルが新しいデータで上書きされてしまう可能性を小さくできる。gabiコマンドには、復旧したいパーティーション、復旧したファイルを保存するパーティーション、Photorecが対象とすべきファイルの種類(全種類でも可)を伝える必要がある。その後Photorecは、「シグネチャ」(ファイルがそのブロック内に存在したことの証明)を求めてハードディスクの空きブロックをスキャンする。ハードディスクが大容量の場合、この作業にはかなり長い時間がかかる。なおinodeのデータは復旧できないため、復旧したファイルは手動で選り分けて、目的のファイルを見つける必要がある。

 一方ralfコマンドは、SleuthKitというフォレンジックソフトウェアを使用して、特定のファイルを復旧する。基本的な手順としては、ralfがSleuthKitを使用して目的のinodeを見つける。次にinodeに対応していたブロックのリストをファイルシステムが持っている情報をもとにして探し出す。最後に、SleuthKitがそれらをイメージとして保存し、(gabiの場合とは異なってハードディスク全体ではなく)それをPhotorecが処理する。その結果、目的のファイル以外のファイルも復旧されることもあり、その場合にはgabiの場合と同様に、復旧されたファイルの中から目的のファイルを選り分けて見つける必要がある。

 今回、ext3undelラッパーをVMware上のアップデート版Ubuntu 8.04 Server Editionで使用してみた。異なる内容の3つのテキストファイルと1つのJPEG画像ファイルを作成して、それらをrmコマンドを使って削除したところ、どのファイルについてもたいした手間を掛けずに、gabiを使ってもralfを使っても復旧できた。とはいえまったく新しくインストールした環境で試したため、それほど多くのファイルを選り分ける必要はなかった(ちなみに仮想環境のイメージファイルを作成した人がリリース前にどのようなファイルを削除したのかを眺めるのは面白かった)。

 ext3undelの最新版は開発者のWebサイトからダウンロードできる。.tarファイルに加えて、構築済みの.debパッケージや.rpmパッケージとしても配布されている。また依存しているPhotorec、Sleuthkit、Foremostをインストールする必要もあるが、これらについてはほとんどのディストリビューションでそのリポジトリから入手可能だ。

 ext3undelには、できるだけ効率良くデータを復旧させるための素晴らしいツールがそろっている。とはいえデータに関して言えば、削除した直後にext3undelを使用しても復旧できないこともあるため過信は禁物で、定期的なバックアップを行うことはやはり必要だ。例えば削除されたファイルがフラグメント化している場合、ext3undelには最初のフラグメントしか見つけることができない。また故障したハードディスクのデータを復旧することも不可能だ。とはいえext3undelは緊急時にはやはり素晴らしいツールであり、事故や失敗から受けるダメージを最低限に抑えることができる。

Kurt Edelbrockは技術記者/ブロガー/大学生。オープンソース関連のさまざまな出版物に執筆しつつ、大規模な公立大学の技術コンサルタントも務めている。


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ