Solaris のシステム管理 (第 1 巻)

第 45 章 ufsdump コマンドと ufsrestore コマンド (参照情報)

この章では、ufsdump コマンドと ufsrestore コマンドの参照情報を示します。

この章の内容は以下のとおりです。

ufsdump の機能

ufsdump コマンドは、ファイルシステムのバックアップを作成するときに 2 つのパスを作成します。最初のパスでは、ufsdump は raw デバイスファイル内でファイルシステムを走査し、メモリー内にディレクトリとファイルのテーブルを作成します。次に、そのテーブルをバックアップ媒体に書き込みます。2 つ目のパスでは、ufsdump は i ノードに番号順にアクセスし、ファイルの内容を読み込んで媒体に書き込みます。

デバイス特性の判断

ufsdump コマンドに必要なことは、適切なブロックの大きさを認識することと、どのようにして媒体の終りを検出するかということです。

媒体の終りの検出

ufsdump は一連の固定長レコードを書き込みます。レコードの一部にしか書き込まれていないという通知を受け取ると、ufsdump は媒体の物理的な終りに達したものと想定します。この方法は、ほとんどのデバイスに有効です。部分的なレコードしか書き込まれなかったことをデバイスが ufsdump に通知できない場合は、 ufsdump が書き込もうとすると媒体エラーが発生します。


注 -

DAT デバイスと 8mm テープデバイスでは、媒体の終りが検出されます。カートリッジテープデバイスと 1/2 インチテープデバイスでは、媒体の終りは検出されません。


ufsdump データのコピー

ufsdump コマンドは、raw ディスクスライスからデータのみをコピーします。ファイルシステムがまだ有効であれば、メモリーバッファー内のデータがコピーされていない可能性があります。ufsdump によるバックアップでは、空きブロックはコピーされず、ディスクスライスのイメージも作成されません。シンボリックリンクが他のスライス上のファイルを指す場合は、リンク自体がコピーされます。

/etc/dumpdates ファイルの役割

ufsdump コマンドを -u オプション付きで使用すると、/etc/dumpdates というファイルを管理し、更新できます。/etc/dumpdates 内の各行は、バックアップが作成されたファイルシステム、前回のバックアップレベル、バックアップ日時と曜日を表しています。次の例は、ファイルサーバーからの典型的な /etc/dumpdates ファイルを示しています。


/dev/rdsk/c0t0d0s0               9 Tue Jul 13 10:58:12 1999
/dev/rdsk/c0t0d0s0               0 Tue Jul 13 10:46:09 1999
/dev/rdsk/c0t0d0s1               0 Tue Jul 13 13:41:04 1999

増分バックアップを実行するときに、ufsdump コマンドは /etc/dumpdates を検索して、下のレベルの最後のバックアップ日付を調べます。次に、下のレベルのバックアップ以降に更新されたすべてのファイルを媒体にコピーします。バックアップが完了すると、完了したばかりのバックアップを記述する新しい情報行によって、そのレベルの最後のバックアップの情報行が置き換えられます。

/etc/dumpdates ファイルを使用して、バックアップが実行中であるかどうかを検査してください。機器に問題が発生している場合は、この検査が特に重要です。機器の障害が原因でバックアップを完了できないと、そのバックアップは /etc/dumpdates ファイルに記録されません。

ディスク全体を復元する必要があれば、/etc/dumpdates ファイル内で最後のバックアップの日付とレベルをチェックできるので、ファイルシステム全体を復元するために必要なファイルを判断できます。


注 -

/etc/dumpdates ファイルは編集可能なテキストファイルですが、編集するかどうかはユーザーの判断によります。ファイルに変更を加えた結果、アーカイブテープと一致しなくなると、必要なテープ (またはファイル) がどれであるか分からなくなることがあります。


バックアップデバイス (dump-file) 引数

dump-file 引数 (-f オプションで使用) では、バックアップ先を指定します。次のいずれかを指定できます。

この引数は、バックアップ先がデフォルトのローカルテープドライブ /dev/rmt/0 でないときに使用します。-f オプションを使用する場合は、dump-file の値を指定しなければなりません。


注 -

また、dump-file 引数では、ローカルディスクまたはリモートディスク上のファイルを指すこともできるので、誤用するとファイルシステムがいっぱいになる可能性があります。


ローカルのテープドライブまたはフロッピーディスクドライブ

通常、dump-file ではテープドライブかフロッピーディスクドライブの raw デバイスファイルを指定します。ufsdump が出力デバイスに書き込むときには、バックアップファイルを 1 つ作成しますが、このファイルは複数のテープやフロッピーディスクにまたがってもかまいません。

デバイスの省略形を使用して、システム上のテープデバイスかフロッピーディスクデバイスを指定します。第 1 のデバイスは常に 0 です。たとえば、SCSI テープコントローラが 1 つと、中密度のフォーマットを使用する QIC-24 テープドライブが 1 つある場合は、次のデバイス名を使用します。

/dev/rmt/0m

テープデバイス名を指定するときは、名前の末尾に文字 "-n" を付けて、バックアップの完了後にテープドライブを巻き戻さないように指定することもできます。たとえば、次のように入力します。

/dev/rmt/0mn

テープに複数のファイルを格納したい場合は、"no-rewind" オプションを使用します。バックアップ中に領域を使い果たすと、ufsdump から新しいテープの挿入を促すプロンプトが表示されるまで、テープは巻き戻されません。デバイスの命名規則についての詳細は、「バックアップデバイス名」を参照してください。

リモートのテープドライブまたはフロッピーディスクドライブ

host:device という形式で、リモートのテープドライブまたはフロッピーディスクドライブを指定します。ローカルシステム上の root ユーザーがリモートシステムへのアクセス権を持っていれば、ufsdump はリモートデバイスに書き込みます。通常、root ユーザーとして ufsdump を実行するのであれば、ルートシステム名がリモートシステムの /.rhosts ファイルに記述されている必要があります。デバイスを user@host:device と指定した場合、ufsdump は指定されたユーザーとしてリモートシステム上でデバイスにアクセスしようとします。この場合、指定されたユーザーの名前が、リモートシステム上の .rhosts ファイル中に含まれている必要があります。

デバイスには、ufsdump コマンドを実行するシステムではなく、そのデバイスが存在するシステムのオペレーティングシステムに合った命名規則を使用してください。デバイスが SunOS の旧バージョン (4.1.1 など) を実行するシステム上にある場合は、SunOS 4.1 でのデバイス名 (/dev/rst0 など) を使用します。システムが Solaris ソフトウェアを実行中の場合は、SunOS 5.8 でのデバイス名 (/dev/rmt/0) を使用します。


注 -

dump-file 引数を使用して、リモートデバイスを明示的に指定しなければなりません。SunOS の旧バージョンでは、rdump コマンドは出力を dumphost 別名で定義されたリモートデバイスに送っていました。ufsdump にはそれに相当する rufsdump がありません。


ufsdump で標準出力を使用する

dump-file 引数としてダッシュ (-) を指定すると、ufsdump は標準出力に書き込みます。


注 -

dump-file 引数として標準出力を指定すると、-v オプション (検査) は機能しません。


ufsdump コマンドを使用して標準出力に書き込み、ufsrestore コマンドを使用して標準入力から読み込むと、パイプライン内でファイルシステムをコピーできます。次のようになります。


# ufsdump 0f - /dev/rdsk/c0t0d0s7 | (cd /home; ufsrestore xf -)

バックアップを作成するファイルを指定する

コマンド行の最後の引数として、必ずバックアップするファイル (files-to-back-up) を指定しなければなりません。この引数は、バックアップのコピー元または内容を指定します。通常はファイルシステムを識別しますが、個々のファイルやディレクトリを識別することもできます。

ファイルシステムの場合は、ディスクスライスの raw デバイスファイルを指定します。これには、ファイルコントローラの省略形 (c)、SCSI デバイス専用のターゲット番号 (t)、ディスク番号 (d) とスライス番号 (s) の識別番号が含まれます。たとえば、スタンドアロンシステム (またはサーバー) 上に SCSI ディスクコントローラがあり、スライス 6 に入っている /usr のバックアップを作成したい場合は、デバイスを次のように指定します。

/dev/rdsk/c0t0d0s6

ファイルシステムは、そのエントリが /etc/vfstab ファイルに入っていれば、マウントポイントディレクトリ (/home など) を使用して指定できます。

デバイスの命名規則についての詳細は、「バックアップデバイス名」を参照してください。

個々のファイルやディレクトリごとに、1 つまたは複数の名前を空白で区切って入力します。


注 -

ufsdump を使用して (ファイルシステム全体ではなく) 1 つまたは複数のディレクトリまたはファイルのバックアップを作成するときには、レベル 0 のバックアップが実行されます。増分バックアップは適用されません。


媒体の終りの検出

ufsdump は、ほとんどのデバイスの媒体の終りを自動的に検出します。したがって、通常は -c-d-s-t オプションを使用しなくても、複数のボリュームのバックアップを実行できます。

媒体の終りオプションを使用する必要があるのは、デバイスによる媒体の終りの検出方法が ufsdump で認識されないときや、restore コマンドの旧バージョンを使用してシステム上のファイルを復元しようとしているときです。restore コマンドの旧バージョンとの互換性を確保するために、サイズオプションを使用すると、従来どおり、現在のテープやフロッピーディスクの終りに達する前に、ufsdump を次のテープやフロッピーディスクに強制的に進ませることができます。

テープの性質を指定する

テープの性質を指定しなければ、ufsdump コマンドはデフォルト設定を使用します。テープカートリッジ (-c)、密度 (-d)、サイズ (-s)、トラック数 (-t) を指定できます。オプションの順序とその引数の順番が一致していれば、オプションはいくつでも指定できます。

ufsdump の制限

表 45-1 に、ufsdump コマンドでは実行できない作業を示します。

表 45-1 ufsdump で実行できない作業

実行できない作業 

備考 

ファイルシステムのバックアップに必要なテープやフロッピーディスクの数を自動的に計算する。 

仮実行 (ドライラン) モード (S オプション) を使用すると、実際にファイルシステムをバックアップする前に必要な容量を判断できる。 

アクティブなファイルシステムをバックアップするときの問題を最小限度に抑えるために、組み込みエラーチェック機能を提供する。 

サーバーからリモートにマウントされたファイルをバックアップする。 

サーバー上のファイルのバックアップは、そのサーバー上で実行しなければならない。ユーザーがサーバー上で所有するファイル上で ufsdump を実行するアクセス権は拒否される。

ufsdump コマンドのオプションと引数

この節では、ufsdump コマンドのオプションと引数について詳しく説明します。ufsdump コマンドの構文は次のとおりです。


/usr/sbin/ufsdump [options] [arguments] files-to-back-up

options

1 文字のオプション名からなる 1 つの文字列 

arguments

オプションの引数を指定する。複数の文字列も可。オプション文字と引数とは同じ順序で並べなければならない。 

files-to-back-up

バックアップするファイルを指定する。これらの引数は常に最後に指定する。 

ufsdump のデフォルトオプション

オプションを指定せずに ufsdump コマンドを実行する場合は、次の構文を使用します。


# ufsdump files-to-back-up

ufsdump では、デフォルトで次のオプションが使用されます。


ufsdump 9uf /dev/rmt/0 files-to-back-up

これらのオプションでは、デフォルトのテープドライブ上にその推奨密度でレベル 9 の増分バックアップが作成されます。

ufsdump コマンドのオプション

表 45-2 に、ufsdump コマンドのオプションを示します。

表 45-2 ufsdump コマンドのオプション

オプション 

説明 

0-9

バックアップレベル。レベル 0 は files-to-back-up で指定したファイルシステム全体の完全バックアップ用。レベル 1 〜 9 は、最後の下位バックアップ以降に変更があったファイルの増分バックアップ用。

a archive-file

アーカイブファイル。指定したディスク上のファイルにバックアップ用の内容一覧を格納 (アーカイブ) する。このファイルは、ufsrestore でしか認識できず、復元すべきファイルがバックアップファイル内にあるかどうかと、もしあればどの媒体ボリュームに入っているかを判断するために使用される。

b factor

ブロック係数。1 処理ごとにテープに書き込まれる 512 バイトのブロック数。 

c

カートリッジ。カートリッジテープにバックアップを作成する。媒体の終りの検出を適用するときは、このオプションでブロックサイズを 126 に設定する。 

d bpi

テープ密度。このオプションは、ufsdump で媒体の終りを検出できないときにのみ使用する必要がある。

D

フロッピーディスク。フロッピーディスクにバックアップを作成する。 

f dump-file

ダンプファイル。デフォルトデバイスではなく dump-file で指定したコピー先にファイルを書き込む。ファイルを user@system:device として指定すると、ufsdump は指定されたユーザーとしてリモートシステム上で実行しようとする。このコマンドをローカルシステム上で実行しリモートシステムにアクセスできるように、指定されたユーザーはリモートシステム上に /.rhosts ファイルを持っていなければならない。

l

自動ロード。このオプションは、オートロード (スタックローダ) テープドライブがある場合に使用する。テープの終りに達すると、このオプションはドライブをオフラインにして、テープドライブの準備ができるまで 2 分間待つ。2 分以内にドライブの準備ができると、続行する。2 分経過しても準備ができなければ、オペレータに別のテープをロードするように促すプロンプトを表示する。 

n

通知。介入が必要になると、sys グループのユーザー全員の端末にメッセージを送る。

o

オフライン。テープやフロッピーディスクの処理が終わると、ドライブをオフラインにして巻き戻し (テープの場合)、可能であれば媒体をはずす (たとえば、フロッピーディスクを取り出したり、8mm の自動ロードテープをはずす)。 

s size

サイズ。テープの場合はフィート数、フロッピーディスクの場合は 1024 バイトのブロック数を指定する。このオプションは、ufsdump で媒体の終りを検出できないときにのみ使用する必要がある。

S

バックアップの予想サイズ。バックアップを実際に実行せずに必要な容量を判断し、バックアップの予想バイト数を示す数値を 1 つ出力する。 

t tracks

トラック数。1/4 インチカートリッジテープのトラック数を指定する。このオプションを使用する必要があるのは、ufsdump で媒体の終りを検出できないときだけである。

u

ダンプレコードのアップデート。ファイルシステムの完全バックアップをとる場合には、ファイル /etc/dumpdates ファイルにエントリを追加する。このエントリは、ファイルシステムのディスクスライスのデバイス名、バックアップレベル (0 〜 9)、日付を示す。u オプションを使用しないときや、個々のファイルかディレクトリのバックアップを作成するときは、レコードは書き込まれない。バックアップのレコードがすでに同じレベルに存在する場合は、それが置き換えられる。

v

検査。各テープまたはフロッピーディスクが書き込まれた後に、ソースファイルシステムと対照して媒体の内容を検査する。矛盾が発生すると、オペレータに新しい媒体のマウントを促すプロンプトを表示してプロセスを繰り返す。ファイルシステム内で動作が発生すると矛盾が報告されるので、このオプションはマウント解除されたファイルシステム専用である。 

w

警告。/etc/dumpdates ファイルに表示されるファイルシステムのうち、特定の日にバックアップされていないファイルシステムを表示する。このオプションを使用すると、他のすべてのオプションは無視される。

W

強調表示付きの警告。/etc/dumpdates 内のすべてのファイルシステムを表示し、特定の日にバックアップされていないファイルシステムを強調表示する。このオプションを使用すると、他のすべてのオプションは無視される。


注 -

/etc/vfstab ファイルには、ファイルシステムのバックアップ頻度に関する情報は入っていません。


ufsdump とセキュリティに関する注意事項

セキュリティに関する注意事項は次のとおりです。

ufsrestore コマンドのオプションと引数

ufsrestore コマンド構文

ufsrestore の構文は次のとおりです。


ufsrestore [options][arguments][filename ...]

options

1 文字のオプション名からなる 1 つの文字列。irRtx から 1 つだけ選択する。

arguments

オプションに対応する引数。オプションと同じ順序で並んでいなければならない。 

filename

x または t オプションの引数として、復元するファイルを指定する。常に最後に指定する。

ufsrestore のオプションと引数

ufsrestore コマンドには、表 45-3 に示すオプションのうちの 1 つを指定する必要があります。

表 45-3 ufsrestore コマンドに必要なオプション

オプション 

説明 

i

対話式。ufsrestore を対話モードで実行する。このモードでは、限られたシェルコマンドセットを実行して媒体の内容を表示し、復元するファイルやディレクトリを個別に選択できる。利用できるコマンドのリストについては、「対話式の復元コマンド」を参照。

r

再帰。媒体の内容全体を現在の作業ディレクトリ (ファイルシステムの最上位レベル) に復元する。完全ダンプ (例えば restoresymtable) の最上部に増分ダンプを復元するための情報も含まれる。ファイルシステムを完全に復元するには、このオプションを使用して完全 (レベル 0) ダンプを復元してから、各増分ダンプを復元する。これは新しいファイルシステム (newfs コマンドで作成したばかりのファイルシステム) 用だが、バックアップ媒体にないファイルが保存される。

R

復元の再開。復元を再開するボリュームをたずねるプロンプトを表示し、チェックポイントから再開する。完全復元 (r オプション) が中断された後は、このオプションを指定して ufsrestore コマンドを実行し直す。

x [filename...]

 

抽出。filename 引数で指定したファイルを選択的に復元する。filename では、ファイルとディレクトリのリストを指定できる。h オプションも指定しなければ、指定したディレクトリの下のファイルがすべて復元される。filename を省略するか、ルートディレクトリを表す「.」を入力すると、媒体のすべてのボリューム上 (または標準入力から) のすべてのファイルが復元される。既存のファイルは上書きされ、警告が表示される。

t [filename...]

内容一覧。filename 引数で指定したファイルが媒体と対照してチェックされる。ファイルごとに、完全ファイル名と i ノード番号 (ファイルが見つかった場合) が表示されるか、ファイルが「ボリューム」上にないことを示す (複数のボリュームダンプのボリュームを意味する)。filename 引数を入力しなければ、媒体のすべてのボリューム上のファイルが表示される (どのボリュームにファイルが入っているかは区別されない)。h オプションも指定すると、内容ではなく filename で指定したディレクトリファイルのみがチェックされ表示される。内容一覧は、媒体の最初のボリュームから読み込まれるか、a オプションを使用すると指定したアーカイブファイルから読み込まれる。このオプションは xr オプションといっしょに使用できない。

次の表に、ufsrestore コマンドの追加オプションを示します。

表 45-4 ufsrestore コマンドの追加オプション

オプション 

説明 

a archive-file [filename...]

ダンプの内容一覧は、媒体 (最初のボリューム) ではなく、指定した archive-file からダンプの内容一覧が取り出される。このオプションを ti、または x オプションと組み合わせて使用すると、媒体をマウントしなくてもダンプ内のファイルをチェックできる。x コマンドと対話型抽出オプションといっしょに使用すると、ファイルを抽出する前に適切なボリュームのマウントを促すプロンプトが表示される。

b factor

ブロック係数。1 処理ごとにテープに書き込む 512 バイトのブロック数。デフォルトでは、ufsrestore はテープの書き込みに使用したブロック数を表示しようとする。

d

デバッグ。デバッグメッセージ機能をオンにする。 

f backup-file

バックアップファイル。ファイルは、デフォルトのデバイスファイル /dev/rmt/0m ではなく backup-file で指定したソースから読み込まれる。f オプションを使用する場合は、backup-file の値を指定しなければならない。backup-filesystem:device 形式であれば、ufsrestore はリモートデバイスから読み込む。backup-file 引数を使用すると、ローカルディスクやリモートディスク上のファイルも指定できる。backup-file が "-" であれば、ファイルは標準入力から読み込まれる。

h

ディレクトリの展開をオフにする。指定したディレクトリファイルのみが抽出または表示される。 

m

指定したファイルが、バックアップ階層内の位置に関係なくディスク上の現在のディレクトリに復元され、i ノード番号を使用して名前が変更される。たとえば、現在の作業ディレクトリが /files であれば、i ノード番号が 42 のバックアップ ./dready/fcs/test 内のファイルは、/files/42 として復元される。このオプションが便利なのは、少数のファイルを抽出するときだけである。

s n

最初のボリューム媒体上の n 番目のバックアップファイルまでスキップする。このオプションは、1 本のテープに複数のバックアップを入れるときに便利である。

v

詳細表示。各ファイルが復元されるたびに、その名前と i ノード番号が表示される。 

y

媒体の読み込みエラーが発生しても処理を続行する。処理を停止して続行するかどうかを選択するプロンプトを表示せずに、不良ブロックをスキップしようとする。 

対話式の復元コマンド

表 45-5 対話式の復元コマンド

オプション 

説明 

ls [directory-name]

現在のディレクトリまたは指定したディレクトリの内容が表示される。ディレクトリは接尾辞 / 付きで表示され、現在のリスト内で復元 (抽出) されるエントリは接頭辞 * 付きで表示される。詳細オプションを使用すると、i ノード番号が表示される。

cd directory-name

バックアップ階層内の指定したディレクトリに切り替える。 

add [filename]

現在のディレクトリまたは指定したファイルやディレクトリを、抽出 (復元) するファイルのリストに追加する。h オプションを使用しない場合は、指定したディレクトリとそのサブディレクトリ内のすべてのファイルがリストに追加される。ディレクトリに復元したいすべてのファイルが 1 つのバックアップテープやフロッピーディスクに入っていないことがある。すべてのファイルの最新のリビジョンを抽出するには、さまざまなレベルの複数のバックアップから復元しなければならないことがある。

delete [filename]

現在のディレクトリまたは指定したファイルやディレクトリを、抽出 (復元) するファイルのリストから削除する。h オプションを使用しない場合は、指定したディレクトリとそのサブディレクトリ内のすべてのファイルが削除される。ファイルとディレクトリは、構築中の抽出リストからのみ削除される。媒体またはファイルシステムからは削除されない。

extract

リスト内のファイルを抽出し、ディスク上の現在の作業ディレクトリからの相対パスで指定される位置に復元する。1 つのボリュームのバックアップについてボリューム番号をたずねるプロンプトが表示されたら 1 を指定する。複数テープや複数フロッピーディスクから少数のファイルを復元する場合は、最後のテープまたはフロッピーディスクから始める。

help

対話式で使用できるコマンドのリストが表示される。 

pwd

バックアップ階層内の現在の作業ディレクトリのパス名が表示される。 

q

それ以上ファイルを復元しないで対話モードを終了する。 

setmodes

バックアップ元となったファイルシステムのルートディレクトリのモードに合わせて、復元するファイルのモードを設定できる。set owner/mode for '.' [yn]? というプロンプトが表示される。y (yes の意味) を入力すると、バックアップ元となったファイルシステムのルートディレクトリに合わせて、現在のディレクトリのモード (アクセス権、所有者、時刻) を設定できる。このモードは、ファイルシステム全体を復元するときに使用する。

n (no の意味) を入力すると、現在のディレクトリのモードは変更されずにそのまま残る。このモードは、バックアップの一部をファイルのバックアップ元とは異なるディレクトリに復元するときに使用する。

verbose

詳細オプションのオンとオフを切り替える (対話型モードの外側では、コマンド行から v と入力することもできる)。詳細モードがオンになっていると、対話型の ls コマンドでは i ノード番号が表示され、ufsrestore コマンドでは各ファイルが抽出されるたびにファイル情報が表示される。

what

テープやフロッピーディスク上のバックアップヘッダが表示される。