「しまった」という時のための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つの異なるコマンドがある。