hajichan.net technical version

サーバ管理

リストア

ufsdumpコマンドで取得したバックアップからシステムを復旧させます。リストアには、ufsrestoreコマンドを使用します。たまにしか使わないので、復旧作業の時にオプションとか忘れちゃうんですよね。

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
ページのトップへ戻る