2024-06-03 21:15 — asano
カテゴリー:
前回壊したところまで書いたので、今回は復旧する話を書きます。
状況確認と現場保存
まずは状況確認です。
/varパーティションはコピー元・コピー先とも壊れています。バックアップも使用できません。
他のパーティションはざっと見ただけですが異常は無さそうです。
シングルユーザモードのままでは作業しづらいので通常起動させたいところですが、壊れた(と思っている)パーティションの復元の可能性も残しておきたいところです。そこで/dev/wd1e(コピー元)と/dev/wd1f(コピー先)のイメージをファイルとして保存しておきます。
そうしておいて/dev/wd1fをnewfsしてlog, run, dbなどのディレクトリを作成して通常起動します。
失ったもの
ここで/varパーティションにあったもの(失ったもの)をまとめておきます。
- メール
Win機で定期的に取得していたのでほぼ被害は無かったと思います。妹も携帯に転送していたようです。 - crontab
rootの分は自動的にバックアップを取っていました。 - ログ類
これは諦めるしかないかな。 - pkgsrcのインストール記録
アンインストールが出来なくなりましたが滅多にするものではないのであまり困らないかと思います。アップデート時にも古いファイルが残ることになりますが、3年前のpkgsrc移行までは古いファイルは全部残していたのでどうということは無いでしょう。 - Wnn辞書
これ後から気付いたのですが挙げておきます。
他にもあるかもしれませんが、それは気付いたときに対処することにします。
ディレクトリ構成
とりあえず通常起動に必要そうなディレクトリだけ作りましたが、まだあったはずですしパーミッションなども正しくありません。
幸いNetBSDでは/etc/mtree以下に基本的なファイル・ディレクトリのオーナーやパーミッションの一覧があります。これを元に/var以下のものだけ抽出してmtreeコマンドを使用して復元しました。
pkgsrcが追加したものなどは含まれていませんが、それらは気付いたときに追加していくことにします。
fsdbを試してみる
ふとfsdb(File System Debugger?)の存在を思い出して試してみることにしました。
イメージファイルに対しても使えるようなので/dev/wd1eのイメージに対して使ってみます。
mercury [75] # fsdb -F -f /export/sys/rwd1e
** /export/sys/rwd1e
Editing file system `/export/sys/rwd1e'
Last Mounted on /var
current inode: directory
I=2 MODE=40755 SIZE=512
MTIME=May 31 18:38:40 2024 [275032780 nsec]
CTIME=May 31 18:38:40 2024 [275032780 nsec]
ATIME=May 31 18:47:39 2024 [302387926 nsec]
OWNER=root GRP=wheel LINKCNT=3 FLAGS=0x0 BLKCNT=0x4 GEN=0x7d322c6b
fsdb (inum: 2)> ls
fsdb (inum: 2)>
ところがルートディレクトリのはずのinode=2にあるはずの"."がありません。MODEやOWNERはそれらしい値なのでinodeは無事だけどデータブロックが壊れているということなのか? いやCTIMEもおかしいか。
うーむ、FFSについて勉強するところから始めたらいつになることやら。
ということでこれはあっさり諦めました。
crontabの復旧
rootのcrontabはコピーがありましたが、これはほぼデフォルトなので最悪他のNetBSD機から持ってきても何とかなります。
一方WWWの自動バックアップやらいろいろやっていたwwwユーザのものは何とか復元したいところです。そこで以下を試してみました。
strings /export/sys/rwd1e | less
サイズはブロックサイズ未満のはずですし、実行スクリプトのファイル名で検索すれば見つかるかなと。
これは大当たりで無事発見でき再設定しました。
残りは地道に
Wnn辞書は…… pubdic等は/usr/pkg/share以下のコピーなので問題ありません。頻度ファイルは諦め、個人辞書はちょっと古いコピーがホームにあったので助かりました。
ログ類は放っておけば新規に作られると思っていましたが、/var/log/messagesのように空のファイルを置いておかないといけないものが意外に多いですね。
これで普段使っているものはほぼ復旧できたと考えています。
あとは気付いたときに対応を考えることにします。念のためイメージは保存しておきます。
コメントを追加