ufsdumpコマンドで取得したバックアップからシステムを復旧させます。リストアには、ufsrestoreコマンドを使用します。たまにしか使わないので、復旧作業の時にオプションとか忘れちゃうんですよね。
cdromからシングルモードで起動します。
ok boot cdrom -s
formatコマンドでディスク認識を確認します。
# format
ルート領域(/)にnewfsとfsckを掛けます。
# newfs /dev/rdsk/c0t0d0s0 # fsck /dev/rdsk/c0t0d0s0
テープの中身をルート領域(/)の内容であることを確認します。-tオプションで中身を表示。-vオプションで冗長モード。 -fオプションでテープデバイス指定です。
# ufsrestore -tvf /dev/rmt/0n
又、上記でテープの内容がルート領域(/)の内容でなかった場合、テープの位置をmtコマンドで進めます。
# mt -f /dev/rmt/0n fsf [1...n]
リストアするパーティションをマウントします。
# mkdir /a # mount /dev/dsk/c0t0d0s0 /a
ufsrestoreの実行。-rオプションで再帰的にリストア。-vオプションで冗長モード。 -fオプションでテープデバイス指定です。
# cd /a # ufsrestore -rvf /dev/rmt/0n
マウントを解除してブートブロックをインストールします。
# cd / # umount /a # /usr/sbin/installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk \ /dev/rdsk/c0t0d0s0 (# /usr/sbin/installboot /usr/platform/sun4u/lib/fs/ufs/bootblk \ /dev/rdsk/c0t0d0s0)
システムを停止してシングルユーザモードで起動します。
# /etc/telinit 0 ok boot -s
ユーザ領域(/usr)にnewfsとfsckを掛けます。
# newfs /dev/rdsk/c0t0d0s6 # fsck /dev/rdsk/c0t0d0s6
テープの中身をユーザ領域(/usr)の内容であることを確認します。
# ufsrestore -tvf /dev/rmt/0n
リストアするパーティションをマウントします。
# mkdir /a # mount /dev/dsk/c0t0d0s6 /a
ufsrestoreの実行。
# cd /a # ufsrestore -rvf /dev/rmt/0n
マウントを解除します。
# cd / # umount /a
以下、同様にvar領域(/var)、home領域(/export/home)などもリストアします。
最後にシステムを再起動して終了です。
# /etc/telinit 6
ある特定のファイルだけ復旧したいと言うときに使用します。ufsrestoreのxオプションで取り出したいファイル名を相対パスで指定します。
以下に、/etc/passwdファイルのみをテープから取り出す例を記載します。
# ufsrestore -xvf /dev/rmt/0n ./etc/passwd --- Verify volume and initialize maps Media block size is 126 Dump date: Mon Nov 07 16:53:45 2005 Dumped from: the epoch Level 0 dump of / on hoge:/dev/dsk/c0t2d0s0 Label: none Extract directories from tape Initialize symbol table. Make node ./etc Extract requested files You have not read any volumes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 // 1を入力 extract file ./etc/passwd Add links Set directory mode, owner, and times. set owner/mode for '.'? [yn] y // yを入力
ufsrestoreのiオプションで対話モードでリストア出来ます。
# ufsrestore -if /dev/rmt/0n --- ufsrestore > ls // 一覧表示 .: a/ etc/ lost+found/ proc/ vol/ bin export/ mnt/ sbin/ xfn/ cdrom/ home/ net/ tmp/ dev/ kernel/ opt/ usr/ devices/ lib platform/ var/ ufsrestore > add etc // etcをリストアするよう選択します ufsrestore > ls // 選択されているものは、アスタリスク表示になります .: a/ *etc/ lost+found/ proc/ vol/ bin export/ mnt/ sbin/ xfn/ cdrom/ home/ net/ tmp/ dev/ kernel/ opt/ usr/ devices/ lib platform/ var/ ufsrestore > extract // リストア実行 You have not read any volumes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 // 1を入力 set owner/mode for '.'? [yn] y // yを入力 ufsrestore > q