| Linux Tips | |
|
削除したファイルを復活するには 北浦訓行 |
|
Linuxで一度削除してしまったファイルを復活するには、いろいろと困難な問題がある。最も大きな要因は、Linuxがマルチユーザー、マルチタスクシステムである点だ。削除したファイルを復活させようと思っても、別のプロセスが削除したファイルの領域を使ってしまう可能性があるのだ。従って、ここで紹介する方法で復活を試みても、元に戻すことができない場合もある。
ここでは、「Hello!!!」という内容のhello.txt(11bytes)を削除して、復活してみる。
誤ってファイルを削除した場合は、速やかにランレベル1に移行する。以下のように、suコマンドでrootユーザーになり、telinitコマンドを実行する。
$ su - ←rootになる |
次に、HDをリードオンリーでマウントし直す。こうすれば、削除したファイル領域にほかのプロセスがデータを上書きしてしまうことがなくなる。
sh-2.04 # mount -o remount,ro /dev/hda1 ←hda1をリードオンリーでリマウント |
ファイルの復活作業を始める前に、もう1点注意しなければならないことがある。それは、削除したファイル領域を保護するために/dev/hda1をリードオンリーにしたことだ。もし、ルートディレクトリ(/)をhda1にしていたら、ルート以下にはデータを書き込めない。削除したファイルの復活は、削除したiノードからファイルをコピーする作業になるので、ファイルを書き込めるメディアが必要となる。
もし、/bootや/usr、/homeなどのディレクトリごとにパーティションを分けているなら(それが推奨される方法)問題はないのだが、1つのパーティションに全ディレクトリをまとめているのであれば、(ファイルサイズの制限はあるが)FDやMOなどのリムーバブルメディアに保存するのが簡単だ。ここでは、FDにコピーするものとして、FDDをマウントする。
sh-2.04 # mount /mnt/floppy |
いよいよ実際にファイルを復活させる作業に入る。削除したファイルを復活するには、mc(GNU Midnight Commander)というファイラ(ファイル操作ソフト)を使う。最近のGNOMEがインストールされているディストリビューションなら、mcはたいていインストール済みなので(LASER5 Linux 7.1、Red Hat Linux 7.1、Turbolinux 7 Workstation、Vine Linux 2.1.5で確認)、そのままmcコマンドを実行すればいい。
sh-2.04 # mc |
インストールされていない場合は、http://www.gnome.org/projects/mc/にあるリンクから最新版のソースファイルをダウンロードしてインストールしておく(誤消去する前にインストールしておく必要がある)。その際には、configureのオプションで「--with-ext2undel」を指定しなければならない(ソースファイルで配布されているプログラムをインストールするにはを参照)。
mcが起動したら、[F9]キーを押してプルダウンメニューを表示する。メニューの中に[Undelete files]という項目があるので、これを選択する。
![]() |
| [Undelete files]は、日本語化されているmcでは[ファイルの復活]という項目になっている(画像をクリックすると拡大表示します) |
復活させるファイルが入っているデバイス名を入力する画面になるので、「hda1」とか「hdb2」といったデバイス名を入力する。その際、「/dev/」を入力する必要はない点に注意が必要だ。入力したら、[Enter]キーを押す。
![]() |
| デバイス名を入力する画面。ここでは「hda1」と入力した(画像をクリックすると拡大表示します) |
復活可能なファイル(実際にはiノード)の検索が始まり、しばらくすると画面の右側にiノードの一覧が表示される。ここで表示されるファイルの名前は単なる数字の羅列なので、ファイル名からは消去したファイルを探すことができない。ファイルサイズと最後に修正した日付から類推するしかない。
![]() |
| 復活可能なiノードの一覧。数字の羅列なので、ファイル名からは復活したいファイルを特定できない(画像をクリックすると拡大表示します) |
この時点では、ファイルをポイントするカーソルは画面の左にあるので、それを画面右に移動しなければならない。[Tab]キーを押すと、カーソルが画面右に移動する。[↑]キーや[↓]キーを使って復活したいファイルを探す。目的のファイルが見つかったら、それを選択(カーソルをそのファイルに移動して、反転表示させる)してコピーする。[F5]キーを押すと、ファイルのコピー先などを入力する画面が表示されるのでコピー先を入力する。
![]() |
| ここでは、FDにhello.txtというファイル名でコピーするので、「/mnt/floppy/hello.txt」と入力(画像をクリックすると拡大表示します) |
筆者の環境では、FDを指定するとコピー先のファイルの所有者を変更できないという旨のエラーメッセージが表示されたが、しばらく待っているとFDへのコピーは終了したので、エラーメッセージのダイアログでは[Abort]を選択した。
ファイルの一覧表示の画面に戻ったら、[F10]キーを押してmcを終了する。試しに、FDにコピーしたhello.txtを表示してみると、無事復活していた。
![]() |
| FDにコピーしたhello.txtの内容を表示してみた。ちゃんと復活している(画像をクリックすると拡大表示します) |
ファイルが復活できたら、「shutdown -r now」でLinuxを再起動しよう。
| Linux Tips Index |
| Linux Squareフォーラム Linux Tipsカテゴリ別インデックス |
|
TechTargetジャパン
- OSSライセンスの採用傾向に「変化」あり (2012/5/21)
OSS普及の一翼を担ってきたライセンス、GPLファミリー採用の割合が減少傾向にあるそうです。いったいどうして? - ここからFirefoxの反撃が始まる (2012/3/12)
2月のLinux SquareのランキングではFirefoxの記事がダントツのページビューを集め、トップに立ちました - CMakeでMySQLをビルドしてみる (2012/3/8)
ここまでの作業でCMakeを使う準備が整いました。今回はひとまずMySQLをビルドしてみます - MySQLのビルドに欠かせないCMakeを準備する (2012/3/2)
今回は、MySQLをビルドするために欠かせないツール「CMake」をインストールし、使う準備をします
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -





