2000年3月

[前の月へ] [メニューへ] [次の月へ]

2000/03/26(Sun)

Real NetworksのホームページからRealPlayer 7 beta for Unixをダウンロードしてみる。
すごいねぇ、これ。こういうクライアントアプリケーションがどんどん増えてくるのはすごくうれしいことだ。

話は変わるが、Resource EditorのためにJavaカンファレンスのパッケージ名登録/利用サービスでpackage名を申請/取得した。取得したパッケージ名はjp.gr.java_conf.ponだ。おいらみたいに固定的なドメインを持たない個人ユーザはJavaのpackage名を付けることが難しい(*1)から、こういうサービスは非常に助かるよね。

(*1)Javaのpackage名の命名付与基準は、ドメイン名の逆順をベースにつける形になっている。詳しくはJava関係の本でも読んでくれい。

2000/03/21(Tue)

やってしまった....(T_T)。何をって rm -rf (重要なディレクトリ)/[return] ...(T_T)。

必要なファイルをすっかり削除しちゃったわけよ、バックアップなんざ取っちゃいないし、いやぁ、もう笑うしかないね〜、ナハハハハ(T_T)。

....と、しばらく火星まで旅行してようやく我に帰ったおいらは、かすかな記憶を辿ってJFにExt2fs-Undeletion.eucというドキュメントがあるのを思いだし、藁をもスガルつもりで削除してしまったファイルの復活を試みることにした。

とりあえず、Ext2fs-Undeletion.eucを調べはじめたのだけど、残念ながら、JFのExt2fs-Undeletion.eucはちょっとバージョンが古いことがわかった(v1.0(Jan 1997))ので、インターネットから同文書のオリジナル(v1.3(Feb 1999))をベースに作業をはじめることにした。大体はJFのバージョンで内容を理解してから差分だけをv1.3で読み直したという感じかな。

以降の内容は自己責任の上、お読みください。

まず、Linux Ext2fs Undeletion mini-HOWTOの作者Aaron Crane氏のホームページから、同文書の最新版とe2recover-1.0という復活用のツールをもらってきた。

で、次に同文書を丹念(?)に読む、読む、読む...Zzzzz。って、おい(^^;)。
お、復活したいファイルを含むファイルシステムをumountして作業する必要があると書いてあるぞ。ま、そりゃそうだよね。
でも、おいらが削除しちゃったファイルは/(ルート)パーティションにあるのでおいそれとumountできない。
手はいろいろとあるんだろうけど、おいらは復活したいハードディスクデバイスの内容(/dev/hda2)をddコマンドでまるまる1つのファイルにコピーして、それをベースに復活する方法を取ることにした。この方法だと従来のファイルシステムをumountせずに作業できるし、普段利用しているファイルシステムを直接いじるより安全だ(と思う(^^;))。もちろん、それだけのHDD空き容量が必要なんだけど、今のところ空き容量は結構あるからね。
実は、同文書の6章にcpコマンドを使った同様の方法が載っているんだけど、この方法だとなぜかうまくmountできなかったのでかわりにddを使った。なぜだろう?

当然のことながら作業はrootで行う。
  1. rootになった後、/dev/hda2(復活したいファイルのあるハードディスクデバイス)の内容を、/home/hoge/image.datというファイルにコピーする(以下はファイルシステム配下全てまるまるコピーしている。コピー先のディスク容量が少ない場合は部分的にコピーするっつー手もアリかもね。詳しくはman dd)。
        #su
        Password: 
        #dd if=/dev/hda2 of=/home/hoge/image.dat bs=1024
        
  2. /sbin/debugfs(無い場合はRPMパッケージe2fsprogs-xx.xx-x.rpmをインストールする必要あり)から削除済みのInode,ブロック等の情報の一覧を取得する。
        #cd /home/hoge
        #echo lsdel | /sbin/debugfs image.dat > lsdel.out
        
  3. 先ほどもらってきたe2recoverをコンパイルし(configure & makeのいつものパターンで簡単)、以下のようにして実行する。
        #e2recover --guess-indirects --device=image.dat lsdel.out
        
  4. あとは、/tmpに e2rec.xxxx.image.dat.xxxx というようなファイルが大量にできる。これらが実際に削除されたファイルが復活した姿だ。

これから後はめちゃくちゃ泥臭いけど、一つずつファイルを見ながら、自分が復活したいファイルを探しあてて、見つけたら元のファイル名にリネーム/元のディレクトリに移動ということをやっていった。
ターゲットファイルがテキストファイルだけであればgrepなどを使ってもっと効率的にできたんだろうな。
そうそう、一つ一つファイルを見る際に、xv(画像ビューア)を使った。これだと、画像に変換できないファイルはテキストで表示してくれるから、復活したいファイルが画像とテキストの両方であればこの方法は結構使えると思う。

まぁ、一番良いのはShellスクリプトを使ってファイルの絞りこみをするんだろうけどね。

そんなこんなで、必要だったファイルは全て復活できた。ほんと良かった...。
Linux Ext2fs Undeletion mini-HOWTOにも書いてあったんだけど、一度削除したファイルは当然復活できるかどうかわからないってことは忘れてはいかんな。ラッキーだったと言っておこう(^^)v。

で、今日の教訓
  1. あきらめない
    案外、手はあるもんだね〜。mini-HOWTO等の有用な情報をインターネット上で公開してくれている人々に感謝!
  2. 個人的なファイル(/home配下)は/(ルート)とは別のハードディスク、少なくとも別のパーティションにマウントする
    こうしておけば、簡単にumountできるし、バックアップもやりやすいよね。企業とかでは当たり前だとは思うんだけど、個人利用ではLinuxと言えども/(ルート)のみのディレクトリ・ファイル構成になっている人も多いんじゃない?っておいらだけ?(^^;)
  3. バックアップを取る習慣をつける
    やっぱりこれが基本だよね...。案外簡単なようでやってないもんだな...(^^;)。


もう、2度とこんなことはしないぞ(ぼそっ)。

2000/03/20(Mon)

久しぶりに、XEmacsを21.1.9にバージョンアップ。インストール方法はと同じ。XEmacsもそろそろRPMにしよっかな....(^^;)。

2000/03/19(Sun)

自作ソフトウェア Resource Editor を公開しました。Java開発者向けの簡易エディタです。詳しくはこちら

2000/03/04(Sat)

ALSAを0.5.5にバージョンアップ。 なんか、最近、ALSAの動き早いね〜。
[前の月へ] [メニューへ] [次の月へ]