ufsdumpとufsrestoreのメモ

環境は Solaris 9 です。
ざっくりメモなので、間違ってたりするかもしれません。気付いたら都度書き加えたり、修正していく予定です。

フルバックアップをとる

テープを巻き戻してフルバックアップをとる

 # mt -f /dev/rmt/0 rewind
 # ufsdump 0ucf /dev/rmt/0n /dev/rdsk/c0t0d0s0
オプションの意味
0 完全バックアップ(差分などする場合、1-9を指定)
u /etc/dumpdatesを更新する
c カートリッジテープにバックアップを作成
f 出力先を指定

※/etc/dumpdatesは以下のようなファイル。「0」はバックアップレベル

 # cat /etc/dumpdate
 /dev/rdsk/c0t0d0s0      0 Tue Mar 10 11:17:23 2009
 /dev/rdsk/c0t0d0s1      0 Tue Mar 10 11:17:23 2009

対話的にリストアする

対話モードでよく使っているコマンド
ls ファイル・ディレクトリの表示
pwd 媒体のカレントディレクトリの絶対パスの表示
add 抽出リストへ追加
delete 抽出リストから削除
extract 抽出リストから抽出実行
quit 終了(抽出リストが空でなくてもすぐに終了)
help ヘルプの表示
リストア手順の例

/tmpに移動

 # cd /tmp

テープの巻き戻して、

 # mt -f /dev/rmt/0n rewind

ufsrestoreを対話的に起動。プロンプトが表示される。

 # ufsrestore if /dev/rmt/0
 ufsrestore >

ls、cdとか使って目的のファイルを見つける。(今回は hoge.txt)

 ufsrestore > pwd
 /
 ufsrestore > ls
 .:
  backup/       lost+found/
 ufsrestore > cd backup
 ufsrestore > pwd
 /backup
 ufsrestore > ls
 ./backup:
  hoge.txt

hoge.txtを抽出リストへ登録(*印が付く)

 ufsrestore > add hoge.txt
 ufsrestore > ls
 *hoge.txt

※ add を実行した時点でディレクトリが作成されるみたいで、今回の例だと、add した時点で「/tmp/backup」が作成されます。ちなみに、verbose modeにすると、add したとき

 Make node ./backup

と表示される。

hoge.txtを抽出リストから削除(*印が消える)

 ufsrestore > delete hoge.txt
 ufsrestore > ls
  hoge.txt

再度追加

 ufsrestore > add hoge.txt
 ufsrestore > ls
 *hoge.txt

verbose mode(冗長モード)にする。extractしたときに、抽出するファイル名を表示したり
してくれる。

 ufsrestore > verbose
 verbose mode on

extractを実行し、抽出リストから抽出。extractを実行するとボリュームの指定を聞かれる。これがまだ良くわからないけど「1」を指定すれと良いらしい。その次にオーナーと、モードをセットしますかと聞かれるので必要なら「y」と答える。

 ufsrestore > add hoge.txt
 ufsrestore > ls
 *hoge.txt
 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
 extract file ./backup/hoge.txt
 Add links
 set owner/mode for '.'? [yn] n

権限がないとき?(rootの所有物を一般ユーザで復元しようとしたときとか?)は
以下のメッセージが表示される。

 Unable to restore ownership of ./backup/hoge.txt: Not owner
 Additional such failures will be ignored.
 set owner/mode for '.'? [yn] n

quitで終了。ファイルを確認。

 ufsrestore > quit
 # ls
 backup
 # cd backup
 # ls
 hoge.txt

mtコマンドで失敗したこと

 # mt -f /dev/rmt/0 rewind
 # ufsdump 0ucf /dev/rmt/0n /dev/rdsk/c0t0d0s0
 # ufsdump 0ucf /dev/rmt/0n /dev/rdsk/c0t0d0s1
 # mt -f /dev/rmt/0 rewind

としたとき、2つ目を取り出そうとして

 # mt -f /dev/rmt/0 fsf 1

としても「n」を付けてないので、巻き戻されるので、

 # mt -f /dev/rmt/0n fsf 1

とする。