Last modified: Mon 9 Oct 2000
UNIX USER 誌7月号に紹介されていた方法なのですが実際に試してみましたのでここに書き留めておきます。誰もが経験したことがあるかも知れませんが
rm コマンドでうっかり大事なファイルを消してしまった場合の復旧方法の一例です。私が昔やってしまったのは
root で作業中にうっかり rm / と叩いてしまったことです。すぐに気が付いて
Ctrl+C で止めましたが /etc が完全に消えていました。このときは幸い
/etc を tar で固めてバックアップしていましたので大事には至りませんでしたがこのような場合に削除したファイルを復活できれば大いに助かります。この方法では
mc を使います。 mc は GNOME 環境が入っているシステムならほとんど入っているかと思いますが、無ければ別途インストールしなければいけません。この、インストール時の
configure のオプションで "--with-ext2undel"
を付けることでアンデリート機能が有効になるようです。では実際に以下の条件で試してみます。
ルート (/)が /dev/hda1 にあるとして、あるファイルを誤って削除したとします。これを復旧させてみます。ただし復旧させるファイルを見つけた場合は、別のペーテーションにコピーしなければいけません。ここでは
/home が /dev/hda3 にあるものとしてそこにコピーします。
まずランレベル 1 に移行します。
# telinit 1
次に /dev/hda1を再マウントします。この場合、読取り専用で、
# mount -o remount,ro /dev/hda3
または、
# mount -n -o,remount /
とします。
次に mc を起動します。
# mc
mc が起動したら F9 を押して以下のようにプルダウンメニューの「コマンド
(C) 」を開きます。

そして上図のように「ファイルの復活」を選択します。すると検索するデバイスの入力を促してくるのでこの場合ですと
"hda1" と入力します。 /dev は不要です。すると削除されたファイルの一覧が表示されます。ただしこの場合は元のファイル名は表示されず
"18469:1" のようなファイル名になりますのでファイルサイズと更新時刻から類推することになります。もしこれだと思われるファイルが見つかったらカーソルを移動して反転表示(選択)し、
F5 を押します。すると復活したいファイル名と保存先のディレクトリを聞いてきますが、保存先のディレクトリは必ず復活したいファイルの場所とは別のパーテーションでなければいけません。今回の場合は削除したファイルが
/dev/hda1 で今作業しているのが /dev/hda1
ですから /dev/hda3 にあるパーテーション内の適当なディレクトリに保存するようにします。これで
OK を押せば復活したファイルが保存されます。今回の例ですと
"18469:1" という名前で保存されています。このファイルを開いてみれば削除したファイルになっているはずです。
参考文献: UNIX USER 7月号
HOME
Linux 活用日記