「しまった」という時のためのext3undel
rm
コマンドはデータを削除するためのパワフルなツールだ――が、ファイルやディレクトリを誤って削除してしまった場合にはそうとも言っていられない。しかしありがたいことに ext3undel ユーティリティを使えば、ext3ファイルシステム上で誤って削除してしまったデータを復旧することができる。ext3undelを使えば、ファイル名で指定したファイルを復旧させることもできるし、削除されたという印が付けられている全ファイルを復旧することもできる(ただしこの場合ファイル名は復旧できないため目的のファイルを見つけるためにファイルの内容を確認する必要がある)。
ext3ファイルシステム上の各ファイルは、2つの部分から構成されている。一つは、ファイル名、容量、作成日時、アクセス日時などのファイルのメタデータで、inodeというUnixのデータ構造の中に保存されている。もう一つの部分であるファイルの実際の内容は、別途ハードディスク上のデータブロックに保存されている。ファイルを削除すると、そのようなメタデータとデータブロックとを結ぶ情報が失われるので、ファイルについての情報とファイルの内容との対応関係が分からなくなる。ファイルが削除されるとinodeとデータブロックにはどちらにも「空き」という印が付けられて、オペレーティングシステムは新たなデータを書き込む必要が生まれたときにそれらを使用することができる。しかし言い換えればinodeとブロックには「空き」という印が付けられているだけで、まだ上書きはされていない状態なので、新たなデータが書き込まれるまでの間はデータを取り戻すことができる。なお、ext3undelでデータの復旧を新たなパーティション上で行うことが重要なのはそのためで、ファイルシステムに対して何らかの変更が行われれば、復旧したいデータが上書きされてしまう恐れがある。その前に、削除されたデータブロックに「使用中」という印をつけて、inodeとデータブロックとを再び結び付ける必要がある。
このことは実際には複雑な作業で、この処理を行うための中心的な機能はext3undelが提供しているわけではない。そうではなくext3undelは、そのような重労働を行う別のいくつかのアプリケーションに対するラッパーだ。ext3undelには、gabi
(get all back immediately;すべてをすぐに元に戻す)と、ralf
(recover a lost file;紛失したファイルを復旧する)という2つの異なるコマンドがある。
gabiは、PhotorecとForemostという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つのテキストファイルと一つのJPEG画像ファイルを作成して、それらをrm
コマンドを使って削除したところ、どのファイルについても大した手間をかけずに、gabiを使ってもralfを使っても復旧することができた。とは言えまったく新しくインストールした環境で試したため、それほど多くのファイルを選り分ける必要はなかった(ちなみに仮想環境のイメージファイルを作成した人がリリース前にどのようなファイルを削除したのかを眺めるのは面白かった)。
ext3undelの最新版は開発者のウェブサイトからダウンロードすることができる。.tarファイルに加えて、構築済みの .debパッケージや .rpmパッケージとしても配布されている。また依存しているPhotorec、Sleuthkit、Foremostをインストールする必要もあるが、これらについてはほとんどのディストリビューションでそのリポジトリから入手可能だ。
ext3undelには、できるだけ効率良くデータを復旧させるための素晴らしいツールが揃っている。とは言えデータに関して言えば、削除した直後にext3undelを使用しても復旧できないこともあるため過信は禁物で、定期的なバックアップを行うことはやはり必要だ。例えば削除されたファイルがフラグメント化している場合、ext3undelには最初のフラグメントしか見つけることができない。また故障したハードディスクのデータを復旧することも不可能だ。とは言えext3undelは緊急時にはやはり素晴らしいツールであり、事故や失敗から受けるダメージを最低限に抑えることができる。
Kurt Edelbrockは技術記者/ブロガー/大学生。オープンソース関連の様々な出版物に執筆しつつ、大規模な公立大学の技術コンサルタントも務めている。