次のことを知っておく必要があります。
復元したいファイルはどのテープに入っているか
復元したいファイルのパス名
ファイルまたはファイルシステムを失なった日付、または復元したいファイルが前回いつごろ変更されたかをユーザーにたずねます。
自分が作成したバックアップ計画を参照して、そのファイルまたはファイルシステムが入っていた前回のバックアップの日付を調べます。
ファイルの最新バージョンを検索するには、増分バックアップファイルを最高レベル (0) から最低レベル (9) へ、最新バージョンから最古バージョンへ逆方向に調べます。
オンラインのアーカイブファイルがある場合には、ufsrestore コマンドを使って正しい媒体を指定します。
# ufsrestore ta archive-name ./path/filename ./path/filename
t |
テープ上に現れる各ファイルを表示する。 |
a |
テープではなくオンラインアーカイブファイルから内容一覧を読み取る。 |
archive-name |
オンラインアーカイブファイル名を指定する。 |
./path/filename |
オンラインアーカイブ上で検索するファイル名を指定する。コマンドが成功した場合は、ufsrestore は i ノード番号とファイル名を出力する。成功しなかった場合は、エラーメッセージを出力する。 |
バックアップが入っている媒体をドライブに挿入し、ufsrestore コマンドを使って正しい媒体であるかどうかを確認します。
# ufsrestore tf device-name ./path/filename ./path/filename
ファイル名には必ず完全パス名を使用してください。ファイルがバックアップに入っていれば、その名前と i ノード番号が表示されます。入っていなければ、そのファイルはそのボリュームに入っていないというメッセージが表示されます。
同じテープに複数のダンプファイルが入っている場合は、s /dev/rmt/n オプションを使って、自分が使用したいダンプがあるテープの位置に移動してください。
# ufsrestore xfs /dev/rmt/n tape_number
ufsdump を使って /usr スライスをダンプする場合、内容一覧には /usr の下にあるファイルとディレクトリが列挙されます。/usr/bin/pwd がオンラインアーカイブに入っているかどうかを調べるには、次のように入力します。
# ufsrestore ta archive-name ./bin/pwd
/usr/bin/pwd がバックアップテープに入っているかどうかを調べるには、次のように入力します。
# ufsrestore tf /dev/rmt/n ./bin/pwd
スーパーユーザーになります。
テープを書き込み保護の状態にします。
バックアップテープをテープドライブに挿入します。
ファイルを復元するための一時的なディレクトリに変更します。
# cd /var/tmp
ファイルを別のディレクトリに復元するには、この手順で /var/tmp を別のディレクトリ名に置き換えます。
ufsrestore コマンドを使って対話方式で復元を開始します。
情報を伝えるためのメッセージと ufsrestore> プロンプトが表示されます。
# ufsrestore if /dev/rmt/n
復元したいファイルのリストを作成します。
verbose モードをオンにして、復元するファイル名を表示します。
ufsrestore> verbose
リストが完了したら、extract コマンドを使います。
ufsrestore> extract
ufsrestore コマンドはどのボリューム番号を使用するかたずねます。
ボリューム番号を入力して、Return キーを押します。ボリュームが 1 つしかない場合には、1 を入力して Return キーを押します。
Specify next volume #: 1
リスト内のファイルとディレクトリが抽出され、現在の作業ディレクトリに復元されます。
現在の作業ディレクトリのモードを変更したくない場合は、set owner/mode プロンプトが表示されたときに n を入力します。
set owner/mode for `.'? [yn] n
ufsrestore プログラムを終了します。
ufsrestore> quit
シェルプロンプトが表示されます。
ファイルが復元されたことを確認します。
次の例では、ファイル /etc/passwd と /etc/shadow がバックアップテープから復元されています。
# cd /var/tmp # ufsrestore if /dev/rmt/0 ufsrestore> ls .: .OWdefaults bin lib sbin/ .Xauthority dev/ lost+found/ shared/ .desksetdefaults devices/ misc/ tmp/ .fm/ etc/ mnt/ ufsboot .mailtool-init export/ net/ usr/ .openwin-init home/ nfs/ var/ .profile hsfsboot opt/ ws/ .wastebasket/ kadb proc/ .xsun.pluto:0 kernel/ ufsrestore> cd etc ufsrestore> add passwd shadow ufsrestore> verbose verbose mode on ufsrestore> extract 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 extract file ./etc/shadow extract file ./etc/passwd Add links Set directory mode, owner, and times. set owner/mode for `.'? [yn] n ufsrestore> quit #
スーパーユーザーになります。
安全のためにテープを書き込み保護します。
バックアップテープをテープドライブに挿入します。
一時的にファイルを復元するディレクトリに変更します。
# cd /var/tmp
ファイルを別のディレクトリに復元するには、この手順で /var/tmp を別のディレクトリ名に置き換えます。
ufsrestore コマンドを使ってファイルを復元します。
# ufsrestore xvf /dev/rmt/n filename ...
x |
引数 filename 内に指定されたファイルまたはディレクトリをコピーするように ufsrestore コマンドに指定する。 |
v |
復元するファイル名を表示する。 |
f /dev/rmt/n |
テープデバイス名を識別する。 |
filename ... |
空白で区切られた 1 つ以上の個別のファイルまたはディレクトリの名前。例 : ./export/home/user1/mail ./export/home/user2/mail. |
ファイルが入っているボリューム番号を入力して、Return キーを押します。
Specify next volume #: 1
ファイルは現在の作業ディレクトリに復元されます。
現在のディレクトリのモードを変更したくない場合は、set owner/mode プロンプトが表示されたときに n と入力して Return キーを押します。
set owner/mode for '.'? [yn] n
特定のファイルを復元します。
この例では、passwd と shadow ファイルが /var/tmp ディレクトリに復元されます。
# cd /var/tmp # ufsrestore xvf /dev/rmt/0 ./etc/passwd ./etc/shadowVerify volume and initialize maps Media block size is 126 Dump date: Wed Nov 06 15:21:10 1996 Dumped from: the epoch Level 0 dump of / on pluto:/dev/dsk/c0t3d0s0 Label: none Extract directories from tape Initialize symbol table. Warning: ./etc: File exists 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 extract file ./etc/passwd Add links Set directory mode, owner, and times. set owner/mode for `.'? [yn] n # cd etc # mv passwd /etc # mv shadow /etc # ls -l etc
テープデバイス名の前に remote-host: を追加して、ファイルをリモートドライブから復元することができます。構文は次のようになります。
ufsrestore rf [user@]remote-host:/dev/rmt/n filename
たとえば、システム venus 上のリモートテープドライブ /dev/rmt/0 にアクセスするには、次のように入力します。
# ufsrestore rf venus:/dev/rmt/0 filename
この手順は、ルート (/) または /usr の復元には使用できません。これらのファイルシステムを復元する方法については、「ルート (/) と /usr を復元する方法」を参照してください。
必要があれば、ファイルシステムをマウント解除します。
# umount /dev/rdsk/device-name
newfs コマンドを使って新しいファイルシステムを作成します。
# newfs /dev/rdsk/device-name
raw デバイス上で新しいファイルシステムを構築したいかどうかをたずねるプロンプトが表示されます。デバイス名は正しく、削除しなければならないような間違ったファイルシステムがないことを確認します。
新しいファイルシステムを作成しなければならないかどうかを確認します。
newfs: construct a new file system /dev/rdsk/cwtxdysz: (y/n)? y
新しいファイルシステムが作成されます。
一時的なマウントポイントに新しいファイルシステムをマウントします。
# mount /dev/dsk/device-name /mnt
ディレクトリを /mnt に変更します。
# cd mnt
マウントポイントディレクトリに変更しました。
テープを書き込み保護します。
レベル 0 テープの第 1 ボリュームをテープドライブに挿入します。
ufsrestore コマンドを使ってテープ上のファイルを復元します。
# ufsrestore rvf /dev/rmt/n
レベル 0 ダンプが復元されます。ダンプの実行に複数のテープが必要な場合は、次のテープをロードするようにプロンプトが表示されます。
テープを外して、ドライブに次のテープをロードします。
テープの復元は必ず 0 から始め、一番高いレベルまで継続します。
ufsrestore コマンドを使ってファイルシステムを復元します。
# ufsrestore rvf /dev/rmt/n
次のレベルのテープが復元されます。ダンプの実行に複数のテープが必要な場合は、次のテープをロードするようにプロンプトが表示されます。
ファイルシステムが復元されていることを確認します。
# ls
restoresymtable ファイルを削除します。
# rm restoresymtable
ufsrestore によって作成された restoresymtable が削除されます。
別のディレクトリに変更します。
# cd /
新しく復元されたファイルシステムをマウント解除します。
# umount /mnt
最後のテープを外し、書き込み保護されていない新しいテープをテープドライブに挿入します。
ufsdump コマンドを使って、新しく復元されたファイルシステムのバックアップをとります。
# ufsdump 0uf /dev/rmt/n /dev/rdsk/device-name
ufsrestore はファイルの位置を移動し、i ノード割当てを変更するので、新しく作成されたファイルシステムのバックアップは、必ずすぐにとるようにしてください。
復元されたファイルシステムをマウントします。
# mount /dev/dsk/device-name /mount-point
復元されたファイルシステムはマウントされて、使用できるようになります。
復元され、マウントされたファイルシステムが使用できることを確認します。
# ls /mount-point
この例では、/export/home ファイルシステムが復元されます。
# umount /export/home # newfs /dev/rdsk/c0t3d0s7 newfs: construct a new file system /dev/rdsk/c0t3d0s7: (y/n)? y /dev/rdsk/c0t3d0s7: 41040 sectors in 57 cylinders of 9 tracks, 80 sectors 21.0MB in 4 cyl groups (16 c/g, 5.90MB/g, 2688 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 11632, 23232, 34832, # mount /dev/dsk/c0t3d0s7 /mnt # cd /mnt # ufsrestore rvf /dev/rmt/0 Verify volume and initialize maps Media block size is 126 Dump date: Wed Nov 06 16:21:10 1996 Dumped from: the epoch Level 0 dump of /export/home on pluto:/dev/dsk/c0t3d0s7 Label: none Begin level 0 restore Initialize symbol table. Extract directories from tape Calculate extraction list. Warning: ./lost+found: File exists Make node ./kryten Make node ./kryten/letters Make node ./kryten/memos Make node ./kryten/reports Make node ./rimmer Make node ./rimmer/sc.directives Make node ./rimmer/tests Make node ./rimmer/answers Extract new leaves. Check pointing the restore # ls # rm restoresymtable # cd / # umount /mnt # ufsdump 0ucf /dev/rmt/0 /export/home . . . # mount /dev/dsk/c0t3d0s7 /export/home # ls /export/home
新しいシステムディスクを、ルート (/) と /usr ファイルシステムが復元されるシステムに追加します。
システムディスクを追加する方法についての詳細は、第 23 章「SPARC: ディスク追加の手順」または第 24 章「x86 : ディスク追加の手順」を参照してください。
新しいファイルシステムを一時的なマウントポイントにマウントします。
# mount /dev/dsk/device-name /mnt
/mnt ディレクトリに変更します。
# cd /mnt
テープデバイスのエントリを作成します。
# tapes
テープを書き込み保護します。
ufsrestore コマンドを使ってルートファイルシステムを復元します。
# ufsrestore rvf /dev/rmt/n
レベル 0 のテープが復元されます。
テープを外し、次のレベルのテープをドライブにロードします。
テープの復元は必ず 0 から始め、最も低いレベルから最も高いレベルまで続けます。
ufsrestore コマンドは必要なだけ続けて使用します。
# ufsrestore rvf /dev/rmt/n
次のレベルのテープが復元されます。
テープを追加するたびに、手順 7 と手順 8 を繰り返します。
ファイルシステムが復元されていることを確認します。
# ls
restoresymtable ファイルを削除します。
# rm restoresymtable
ufsrestore によって作成され、復元のチェックポイントに使用された restoresymtable ファイルを削除します。
ルートディレクトリに変更します。
# cd /
新しく作成されたファイルシステムをマウント解除します。
# umount /mnt
新しいファイルシステムをチェックします。
# fsck /dev/rdsk/device-name
復元されたファイルシステムが完全であるかどうかがチェックされます。
installboot コマンドで、ルートパーティションにブートブロックを作成します。
# installboot /usr/platform/`uname-i`/lib/fs/ufs/bootblk /dev/rdsk/ devicename
SPARC システム上で installboot コマンドを使用する方法については「例 - SPARC システム上でルート (/) と /usr を復元する」を、x86 システム上で installboot コマンドを使用する方法については「例 - x86 システム上でルート (/) ファイルシステムを復元する」をそれぞれ参照してください。
新しいテープをテープドライブに挿入します。
新しいファイルシステムのバックアップをとります。
# ufsdump 0uf /dev/rmt/n /dev/rdsk/device-name
レベル 0 のバックアップが実行されます。ufsrestore はファイルの位置を移動し、i ノード割当てを変更するので、新しく作成されたファイルシステムのバックアップは、必ずすぐにとるようにしてください。
必要があれば、/usr ファイルシステムのために手順 5 から 18 までを繰り返します。
システムをリブートします。
# init 6
システムがリブートされます。
# mount /dev/dsk/c0t3d0s0 /mnt # cd /mnt # tapes # ufsrestore rvf /dev/rmt/0 # ls # rm restoresymtable # cd / # umount /mnt # fsck /dev/rdsk/c0t3d0s0 # installboot /usr/platform/`uname -i` /lib/fs/ufs/bootblk /dev/rdsk/c0t3d0s0 # ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t3d0s0 # init 6
# mount /dev/dsk/c0t3d0s0 /mnt # cd /mnt # tapes # ufsrestore rvf /dev/rmt/0 # ls # rm restoresymtable # cd / # umount /mnt # fsck /dev/rdsk/c0t3d0s0 # installboot /usr/platform/`uname -i`/lib/fs/ufs/pboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t3d0s0 # ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t3d0s0 # init 6