>やってしまった……
>
># rm -Rf /
>
>orz。
>
>一瞬何が起きているかわからず、 /dev でエラーが出まくっているのに気付いてあわてて Ctrl-C して停止した。結果的には被害はほとんどなかった。
>
>が、被害状況を調べようとして気付いたのだが ls がない。 sh がないので ebuild が動かないし、そもそも今 exit したら全くログインできなくなる。cp もなければ mv もない。
>
>どどどどうしよう。
>
>ともかく落着くことだ。まず被害を見極めることだ。とにかく ls がないので、echo /* とかしてみて、被害は /dev までだということを知る。 /etc も/home も無傷。これはかなり復旧できそうだ。
>
>でも最悪のケースを考えると再インストールかもしれない。バックアップは取って起こう。さてどうやってバックアップを取るか。 mount がないから外部ディスクをマウントできないし、そもそも cp がないからコピーできない。
>
>幸いネットワークが繋っていた。そういえば rsync があることに気付く。そういうわけで、
>
>rsync -av -e ssh /home/mukai mukai@remotehost:backup
>
>などとして保存する。後で気付いたがしかし、 scp でも良かったよな。シンボリックリンクが解決できないけれど。
>
>/etc も同様にしてバックアップし、いよいよ復旧に移る。さてどうするか。そういえばインストールディスクにはコンパイル済みパッケージがあるのではないか。それをそのまま展開すればいいのではないか。おおっ楽勝!
>
>ディスクをリモートのマシンにマウントして、 stage3-i686-2004.3.tar.bz2 を取ってくる。これをやっぱり rsync を使って /root にコピー。さぁあとは展開するだけさ!
>
>……って tar がねぇ………… orz。
>
>しかたないので、リモートのマシン上で当該 tar.bz2 ファイルから./bin/{tar,bzip2} を持ってきて、これも rsync でコピーする。
>
>んで、
>
># cd /; /root/tar xvf stage3-i686-2004.3.tar ./bin
>
>で /bin にバイナリをびろっと展開する。確認のために ls してみる。できた!(当り前) /devも被害を受けていたので、同様にして /dev も復旧させる。
>
>さて、残る問題は、 /bin にあるバイナリと、 emerge したパッケージのバージョンに齟齬があるという事だろう。まぁそのうち齟齬もなくなると思うのだが、出来る限りそういう面倒は取り除きたい。ついでに、 /bin/zsh もないから入れなおさないと自分がログインできない。
>
>どうするか。 /var/lib/portage/world をコピーする。これの中身は、インストールしたパッケージのリストだから、この中身を見て、必要そうなものだけを抜き出して、残りは全部消す。そして、
>
>cat /root/world | xargs emerge
>
>で再コンパイルだ。それから最後に emerge system もしておく。
>
>結論的には案外と簡単に復活させることができたという印象で、まぁ Ctrl-C が速かったのがなんとかなった原因だろう。最大の教訓というのは、もしやっちまったとしても、辞書順に消えていく関係で /dev がかなり早い段階で現れ、エラーが出るのでそこで止めるとなんとかなる、ということだろうか。いやいやマジで。もっと言うと、パーミッションが適切で amd を使ってたら、 /a でブロックできてたかもしれんなぁ。
>
>いやしかし一時はどうなることかと思いましたよ。やれやれ。
>