DUMP(8)

名称
dump, rdump - ファイルシステムのバックアップ

書式
dump [-0123456789cnSu] [-B records] [-b blocksize] [-d density] [-f file] [-h level] [-L label] [-s feet] [-T date] files-to-dump [-W | -w]

( 4.3BSD のオプションシンタックスは、下位互換を保つためにインプリメントしてありますが、 ここでは説明しません。)

解説
dump は、ファイルシステム上のファイルを検査し、バックアップする必要のある ファイルを決定します。 これらのファイルは、指定されたディスクやテープや他の保管用の記憶メディア にコピーされます (リモートバックアップについては、以下で述べる -f オプションを参照してください)。 ダンプの大きさがメディアのサイズよりも大きくなる場合には、 複数のボリュームへ分割されます。 ほとんどのメディアに対しては、メディアの終了が通知されるまで書込みを行う ことでそのサイズを決定しますが、 メディアの終了を正しく検知できないようなメディア (ある種のテープドライブなど) では、各ボリュームサイズは固定長になります。 実際のサイズは、以下で示してあるオプションで指定されるテープの長さと記録密度、 またはブロック数から決められます。 デフォルトでは、メディア交換をオペレータに要求したあとの各ボリュームにも 同じ出力ファイル名が使われます。

files-to-dump は、ファイルシステムのマウントポイントか、 単一のファイルシステム上のバックアップする部分に対応する ファイルやディレクトリのリストのどちらかです。 前者の場合、マウント済みのファイルシステムへのパスか、 マウントされていないファイルシステムのデバイスが指定できます。 後者の場合、 -u は無視され、サポートするダンプレベルは -0 だけで、全てのファイルが同じファイルシステム上になければならない という制限があります。

dump は以下のオプションをサポートしています:

-0-9
    ダンプレベルです。 レベル 0 はフルバックアップを意味し、ファイルシステム全体が コピーされることが保証されます (しかし、以下で述べる -h オプションも参照して下さい)。0 より大きなレベル番号は インクリメンタルバックアップで、指定したレベルより低い レベルでダンプした時以降に作成または修正されたファイルのみを コピーします。 デフォルトのダンプレベルは 9 です。

-B records
    1 ボリュームあたりのキロバイト数で、ブロックサイズの倍数になるように切捨てた値 です。このオプションは、テープ長と記録密度をもとにして計算した テープサイズよりも優先されます。

-b blocksize
    1 ダンプレコードあたりの大きさのキロバイト単位での値です。

-c  デフォルトの記録密度とテープ長の計算を、よりカートリッジテープにふさわしくなる ように変更します。

-d density
    テープの記録密度を density に設定します。デフォルトは 1600 ビット/インチ (BPI) です。

-f file
    バックアップの出力先を file にします。 file としては、たとえば /dev/rst0 (テープドライブ)、 /dev/rsd1c (ディスクドライブ)、通常のファイル名、 ‘-’ (標準出力) などが指定できます。 複数のファイル名をカンマで区切って 1 つの引数として指定することができます。 各ファイルは、リストの順に 1 つのダンプボリュームに対応します。 この際、指定したファイル名の数よりも多くのボリュームが必要な場合は、 メディア交換の要求を出したあとで、最後に指定したファイル名が 残りのすべてのボリュームに対して使われます。 ファイル名が "host:file" や "user@host:file" のような形式である場合は、 dump は rmt(8) を使用して、指定したリモートホスト上のファイルへ書き込みます。 リモートホスト上の rmt(8) プロセスの起動には、 rsh(1) を使うよりは、環境変数 RCMD_CMD で ssh(1) のようなよりセキュリティのしっかりしたものを指定して使うべきです。 詳細は rcmd(3) を参照してください。

-h level
    指定した level もしくはそれ以上でのダンプについてのみ、ユーザフラグに "nodump" を設定します。 デフォルトの honor レベルは 1 で、この場合は、 インクリメンタルダンプではそのようなファイルを省かれますが、 フルバックアップでは保存されます。

-L label
    ユーザが指定したテキスト文字列 label をダンプヘッダ内に書きます。ここは restore(8) や file(1) などのツールがアクセスできます。 このラベルは最大で LBLSIZE (現在は 16) 文字までに制限されていて、 この数には ‘\0’ が含まれているという点に注意してください。

-n  dump がオペレータの注意を引くことを要求する時にはいつでも、 wall(1) に似た方法で "operator" グループに属するすべてのオペレータに通知します。

-s feet
    個々の記録密度から、必要なテープの量を計算することを試みます。 この量を越えた場合には、 dump は新しいテープへ交換するように要求します。 実際のテープ長を超えてしまってバックアップに失敗することを防ぐために、 多少短めの値を指定することをお勧めします。 デフォルトのテープ長は 2300 フィートです。

-S  バックアップサイズと必要なテープの数の推定値を表示し、 実際にはダンプを行わずに終了します。

-T date
    最終ダンプ開始時間として、 /etc/dumpdates を見て決定された時間の代りに、指定された日付を使用します。日付の フォーマットは ctime(3) のものと同じです。このオプションは、指定された時間内でダンプすることを 希望する自動ダンプスクリプトで有用です。 -T オプションは、 -u オプションとは同時に使用できません。

-u  ダンプに成功したあとに、 /etc/dumpdates ファイルを更新します。 /etc/dumpdates のフォーマットは人間が判読可能な形式になっており、行ごとに、 ファイルシステム名、ダンプレベル、 ctime(3) フォーマットのダンプ日時からなっています。 各レベルで、ファイルシステムごとに 1 つのエントリしかありません。 /etc/dumpdates ファイルは、必要ならば、フィールドのどの部分を編集しても構いません。 ファイルやサブディレクトリのリストを指定してのダンプ (ファイルシステム全体ではなくて) の場合は、 -u は無視されます。

-W  どのファイルシステムがダンプを必要としているかをオペレータに知らせます。 この情報は /etc/dumpdates と /etc/fstab から収集されます。 dump は、 /etc/dumpdates にあるファイルシステムのエントリそれぞれについて、 最近のダンプ日時とそのレベルを表示し、バックアップを 行うべきファイルシステムをハイライト表示します。 -W オプションが指定されると、他のすべてのオプションは無視されて dump は即座に終了します。

-w  W に似ていますが、ダンプが必要なファイルシステムだけを表示します。

dump は、テープの終了、 ダンプの終了、 テープ書込みエラー、 テープオープンエラー、 ディスク読み込みエラー (しきい値である 32 回を越えた場合) の状態の時にオペレータの介入を要求します。 dump がそれ以上処理し続けられない時や、なにか大変まずい事態が起こった場合には、 dump は、 -n オプションによるすべてのオペレータへの警告に加えて、 dump の制御端末上でオペレータとやりとりします。 dump がする全ての質問には、適切に "yes" または "no" を入力して答えなければ なりません 。

フルダンプの実施には多くの時間と労力がかかるため、 dump は、各テープボリュームの先頭にチェックポイントを設定します。 なにがしかの理由でボリュームへの書込みが失敗した場合には、 オペレータが許可すれば、 dump は古いテープを巻き戻し、排出し、新しいテープをマウントした後で、 チェックポイントから実行を再開します。

dump は、何が起こっているかを一定間隔でオペレータに報告します。 これには、通常低く推定した書込みブロック数、必要になると思われるテープの数、 完了するまでの時間、テープの交換までの時間などが含まれます。 dump に使っている端末が使用中であることが他人にもわかるように、 このメッセージは冗長になっており、ある一定期間で出力されます。

ディスクに破滅的な事件が起きた場合、リストアに必要な全ての バックアップテープやファイルがあれば、インクリメンタルダンプにより 損害を最小に保つことができます。 最小のテープ数で効果的にインクリメンタルダンプを行うには、以下のようにします:

•   常にレベル 0 のバックアップから開始します。例えば以下の通りです:

        /sbin/dump -0u -f /dev/nrst1 /usr/src

    これを、一ヶ月毎または二ヶ月毎といった期間をとって新品のテープで実施し、 このテープを永久に保存します。

•   0 レベルのダンプの後は、アクティブなファイルシステムのダンプを毎日行います。 ダンプレベルのシーケンスには、ハノイの塔アルゴリズムを改良した以下のような ものを用います:

        3 2 5 4 7 6 9 8 9 9 ...

    毎日のダンプでは、固定数のテープ使用するとことが可能で、 一週間を基準にして使用します。 毎週、レベル 1 ダンプを行い、毎日のハノイシーケンスの繰り返しは レベル 3 から開始します。 週毎のダンプでは、ダンプするファイルシステム毎に固定数の別の テープを使用し、これも繰り返し使います。

数ヶ月後に、毎日と毎週のテープは、ダンプサイクルから外し、新品のテープを 使用すべきです。

バックアップの実行中にもし dump が SIGINFO シグナルを受信すると (stty(1) の "status" 引数を参照して下さい)、処理が終ったものの量、現在の転送レート、 予想終了時間が標準エラー出力に報告されます。

環境変数
以下の環境変数が存在すれば、 dump がその値を利用します。

TAPE
    -f オプションが指定されていなければ、 dump は環境変数 TAPE に指定されているデバイスファイルをダンプデバイスとして使います。 TAPE は "tapename", "host:tapename", "user@host:tapename" などの形式をとります。

RCMD_CMD
    dump は、リモートマシン上で rmt(8) を起動する場合に、 RCMD_CMD が指定されていれば rsh(1) の代りにそちらを使います。

関連ファイル
/dev/rst0
    ダンプをするデフォルトのテープユニット
/dev/rst*
    SCSI tape の raw デバイス
/etc/dumpdates
    ダンプの日付を記録するファイル
/etc/fstab
    ダンプテーブル: ファイルシステムとダンプの頻度を決めるファイル
/etc/group
    operator グループを検索する

関連項目
stty(1), fts(3), fstab(5), restore(8), rmt(8), st(4)

診断
たくさんあって、かつ冗長です。

dump は、成功時には 0 のステータスで終了します。 スタートアップ時のエラーは終了コード 1 で示され、 異常終了時は終了コード 3 で示されます。

バグ
ファイルシステム読み取りエラーが 32 回未満の場合は、無視されます。

各リールごとに新たなプロセスが必要なので、既に書き込まれたリール用の 親プロセスは、テープが書込み完了するまで hang します。

-W または、 -w オプションをつけて dump を実行した場合は、 /etc/fstab にリストアップされているファイルシステムでも、 /etc/dumpdates に記録されていないファイルシステムについては報告しません。

ファイルやサブディレクトリのリストを指定してダンプしている場合には、 そのディレクトリをスキャンするための権限が必要です (この場合はファイルシステムを直接アクセスするのではなく fts(3) ルーチンを使ってアクセスするためです)。

dump が、ダンプシーケンスについて知っていて、使い散らかしたテープの使用履歴を 管理でき、どのテープをいつマウントすればよいかをオペレータに教えてくれ、 restore(8) を実行するオペレータをもっと助けてくれたら、もっと使いやすいでしょうね。

歴史
dump コマンドは AT&T UNIX から登場しています。