Solaris のシステム管理 (基本編)

第 50 章 UFS バックアップおよび復元コマンド (参照情報)

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

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

ufsdump コマンドの機能

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

デバイス特性の判断

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

メディアの終わりの検出

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


注 –

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


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

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

ufsdump データのコピー

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

/etc/dumpdates ファイルの役割

ufsdump コマンドを -u オプション付きで使用すると、/etc/dumpdates というファイルを管理し、更新できます。/etc/dumpdates ファイル内の各行は、バックアップが作成されたファイルシステム、前回のバックアップレベル、バックアップの日付、曜日、および時刻を表しています。たとえば、次のようになります。


/dev/rdsk/c0t0d0s7               0 Mon Dec 10 16:26:10 2001
/dev/rdsk/c0t0d0s7               9 Tue Dec 11 16:45:14 2001
/dev/rdsk/c0t0d0s7               9 Wed Dec 12 16:54:47 2001

増分バックアップの実行時に、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.9 でのデバイス名 (/dev/rmt/0 など) を使用します。

ufsdump コマンドで標準出力を使用する

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


注 –

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


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


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

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

コマンド行の最後の引数として、バックアップするファイル (filenames) を必ず指定してください。この引数は、バックアップのコピー元または内容を指定します。

ファイルシステムの場合、次のように raw デバイスファイルを指定します。

/dev/rdsk/c0t0d0s6

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

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

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


注 –

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


テープの性質を指定する

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

ufsdump の制限

次に、ufsdump コマンドでは実行できない操作を示します。

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

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


/usr/sbin/ufsdump options arguments filenames 

options

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

arguments

オプションの引数を指定する。複数の文字列も可。オプション文字と引数は、同じ順序で並べる必要がある。 

filenames

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

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

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


# ufsdump filenames

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


ufsdump 9uf /dev/rmt/0 filenames

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

ufsdump コマンドのオプション

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

表 50–1 ufsdump コマンドのオプション

オプション 

説明 

0–9

ダンプレベル。レベル 0 は、filenames で指定したファイルシステム全体の完全バックアップ用。レベル 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

検査。各テープまたはフロッピーディスクへの書き込み後に、ソースファイルシステムと対照してメディアの内容を検査する。不整合が検出されると、オペレータに新しいメディアのマウントを促すプロンプトを表示してプロセスを繰り返す。ファイルシステム内で操作が実行されると、ufsdump コマンドが不整合を報告するため、このオプションはマウント解除されたファイルシステムにのみ使用する必要がある。

w

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

W

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


注 –

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


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

セキュリティ保護を適用するには、次の操作を実行する必要があります。

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

ufsrestore コマンドの構文を、次に示します。


ufsrestore options arguments filenames

options

1 文字のオプション名からなる 1 つの文字列。irRtx から 1 つだけ選択する。表 50–3 に示す追加オプションは、省略可能。

arguments

オプションに対応する引数。オプション文字と引数は、同じ順序で並べる必要がある。 

filenames

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

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

表 50–2 ufsrestore コマンドに必要なオプション

オプション 

説明 

i

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

r

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

R

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

x [ filenames]

 

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

t [ filenames]

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

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

表 50–3 ufsrestore コマンドの追加オプション

オプション 

説明 

a archive-file [filenames]

ダンプの内容一覧は、メディア (最初のボリューム) ではなく、指定した 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

メディアの読み込みエラーが発生しても処理を続行する。処理を停止して続行するかどうかを選択するプロンプトを表示せずに、不良ブロックをスキップしようとする。このオプションによって、コマンドは肯定の応答とみなすよう命令される。 

次の表に、ufsrestore の対話式コマンドを示します。

表 50–4 対話式の復元コマンド

オプション 

説明 

ls [directory-name]

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

cd directory-name

バックアップ階層内の指定したディレクトリに変更する。 

add [filename]

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

delete [filename]

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

extract

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

help

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

pwd

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

q

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

setmodes

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

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

verbose

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

what

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