DUMP(8)

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

書式
dump [-0123456789acLnSu] [-B records] [-b blocksize] [-C cachesize] [-D dumpdates] [-d density] [-f file | -P pipecommand] [-h level] [-s feet] [-T date] filesystem dump -W | -w

rdump は dump の別名です。

(4.3BSD 形式のオプションは後方互換性のために実装されていますが、 ここでは説明していません。)

解説
dump ユーティリティは、ファイルシステムを調べて バックアップする必要のあるファイルを決定します。 これらのファイルは、指定されたディスク、テープや、 その他の記憶メディアへ保存のためコピーされます (リモートバックアップについては、 -f オプションを参照)。 ダンプの大きさが記録メディアの容量より大きい場合は、 複数ボリュームに分割します。 たいていのメディアの容量は、メディアの終りを通知されるまで 書き込んでみることで決定します。 この方法は、 -a オプションにより強制的に使用することもできます。

メディアの終りを正しく通知できないメディア (一部の カートリッジ・テープドライブ等) の容量は、 テープ長と記録密度や -B オプションから求め、 各ボリュームはすべて同じ容量を持つものとします。 デフォルトでは、 オペレータにメディア交換を要求した後の各ボリュームにも 同じ出力ファイル名を使用します。

ダンプ対象のファイルシステムは、引数 filesystem にて、デバイススペシャルファイルか (/etc/fstab 中の標準エントリの場合) マウントポイントで指定します。

dump は、次のオプションをサポートしています。

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

-a  “オートサイズ” 全てのテープ長の考慮をせず、メディアの終了を通知されるまで、強制的に 書き込みを続けます。現在のほとんどのテープドライブでは、この方法により もっとも良い結果が得られます。特に、使いかけのテープに追加したり、 ハードウェア圧縮機能のあるテープドライブ(圧縮率がどの程度になるか不確かな もの)を使用したりする場合にこのオプションを使用することをお薦めします。

-B records
    ボリュームあたりのキロバイト数です。 この値が出力ブロックサイズの整数倍でない場合、 コマンドはこの値より小さい整数倍値を使用します。 このオプションは、テープ長と記録密度を基にしたテープ容量より 優先されます。

-b blocksize
    出力ブロックあたりのキロバイト数です。

-C cachesize
    キャッシュサイズをメガバイト単位で指定します。 性能が劇的に向上しますが、 パス間のファイルシステムへの変更に dump が気付かない可能性があります。 スナップショットダンプ時には本オプションを常に使用することをお勧めします。 dump はフォークしますので、 実際に使用されるメモリ量はキャッシュサイズより大きいかもしれないことに 注意してください。 推奨キャッシュサイズは 8 から 32 (メガバイト) の間です。

-c  カートリッジテープドライブ用に、記録密度とテープ長のデフォルトをそれぞれ 8000 bpi、1700 feet に変更します。

-D dumpdates
    dumpdates ファイルの代替パスを指定します。 デフォルトは /etc/dumpdates です。

-d density
    テープの記録密度を density に設定します。デフォルトは 1600BPI です。

-f file
    バックアップの出力先ファイルを指定します。 出力先ファイルとしては、 /dev/sa0 (テープドライブ)や /dev/fd1 (フロッピディスクドライブ)のようなデバイスファイル、 通常ファイル、 ‘-’ (標準出力)を指定することができます。 複数のファイル名を、コンマで区切って一つの引数として指定する ことができます。 各ファイルは、リストされた順に一つのダンプボリュームに使用されます。 指定した名前の数より多くのボリュームが必要な場合、 メディアの交換を要求した後、最後のファイル名を残りのすべての ボリュームに使用します。 ファイル名が、 “host:file” または、 “user@host:file” の形式である場合、 dump は、 rmt(8) を使用してリモートホスト上の指定されたファイルに書き込みます。 リモートの rmt(8) のデフォルトのパス名は /etc/rmt ですが、環境変数 RMT の値が優先されます。

-P pipecommand
    pipecommand で定義された sh(1) スクリプト文字列を各ボリュームの出力デバイスに対して実行するために popen(3) を使います。 この子のパイプラインの 標準入力 (/dev/fd/0) は dump の出力ストリームからリダイレクトされ、環境変数 DUMP_VOLUME には現在書き込んでいるボリューム番号が設定されます。 各ボリュームを書き込んだ後で、パイプの書き手側がクローズされ、 pipecommand が再び実行されます。 -B でメディアの大きさが指定されていれば、出力がテープドライブであるかのように、 各ボリュームを上記のように書き出します。

-h level
    ダンプレベルが level 以上の時に、ユーザが指定した “nodump” フラグ (UF_NODUMP) に従います (h: honor the flag)。 デフォルトの honor レベルは 1 ですから、 そのようなファイルは、インクリメンタルダンプからは省かれますが、 フルバックアップには含まれます。

-L  ライブファイルシステムをダンプ中であることを dump に通知します。 一貫性のあるダンプイメージを得るために、 ダンプ対象のファイルシステムのルートの .snap ディレクトリに、 dump はファイルシステムのスナップショットを取り、 それからスナップショットをダンプします。 ダンプ完了時に、スナップショットは削除されます。 アンマウントされたファイルシステムや読み込み専用のファイルシステムに対しては、 このオプションは無視されます。 ダンプ対象のファイルシステムのルートに .snap ディレクトリが存在しない場合、警告が出て dump は標準の動作に戻ります。 この問題は、ダンプ対象のファイルシステムのルートに .snap ディレクトリを作成することで、解決可能です。 このディレクトリの所有者は “root” で、グループは “operator” で、 モードは “0770” であるべきです。

-n  dump がオペレータに注意を促す時に、 wall(1) に似た方法で “operator” グループに属するすべてのユーザにメッセージを送ります。

-S  バックアップの大きさと必要なテープ数の見積もりを表示し、 実際のダンプを実行せずに終了します。

-s feet
    テープの容量を計算する時に記録密度とともに使います。 この容量を超えた場合に、 dump は新しいテープを要求します。 このオプションはやや控え目に指定することをお勧めします。 デフォルトのテープの長さは、2300 フィートです。

-T date
    dumpdates ファイル から得られた日時の代わりに、指定された date をダンプの起点として 使います。date の形式は ctime(3) のそれと同じです。このオプションは期間を指定してバックアップを 取るダンプスクリプトで有用です。 -T オプションは -u オプションと同時には指定できません。

-u  ダンプが成功した後で、 dumpdates ファイルを更新します。 dumpdates ファイル は人が読めるファイルであり、各行に以下のレコードが フリーフォーマットで記録されています : ファイルシステム名、インクリメントレベル、 ctime(3) 形式のダンプ日付。 各レベルとファイルシステムごとにエントリが一つだけ存在します。 必要なら、 dumpdates ファイル の各フィールドを編集しても構いません。 dumpdates ファイルのデフォルトは /etc/dumpdates ですが、 -D を使用してこれを変更可能です。

-W  ダンプの必要があるファイルシステムをオペレータに表示します。 この情報は dumpdates ファイル と /etc/fstab ファイルから集められます。 dump は、 dumpdates ファイル の中の各ファイルシステム毎に最新のダンプ日付とレベルを示し、 ダンプするべきファイルシステムを明らかにします。 -W オプションが指定された場合、その他のすべてのオプションは無視され、 dump は直ちに終了します。

-w  -W と同様ですが、ダンプの必要のあるファイルシステムのみを表示します。

“nodump” フラグ (UF_NODUMP) が設定されたディレクトリおよび通常ファイルと、 そのようなディレクトリ配下のすべては、省略されます。 -h オプションに従います。

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

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

dump ユーティリティは、処理の進行を (5 分毎または SIGINFO 受信時に) 定期的にオペレータに報告します。 報告には、少なめに推定される書き込みブロック数、 必要なテープ数、完了までの時間、テープ交換までの時間、 を含みます。 dump に使っている端末が使用中であることが他人にも分かるように、 このメッセージは冗長になっています。

ディスクに壊滅的なトラブルが起きた時に、 バックアップテープやファイルからディスクを復元するために 必要な時間は、 インクリメンタルダンプを適当なシーケンスで実行する事によって 最小にする事ができます。 最小のテープ数でこれを行なう効果的な方法を示します。

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

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

    これを一ヵ月か二ヵ月毎に新しいテープに対して実施し、 ずっと保存します。

•   0 レベルのダンプの後は、アクティブなファイルシステム (データが更新されるファイルシステムです。 パーティションレイアウトによっては、 データが更新されないファイルシステムもあります) のダンプを、 修正ハノイの塔アルゴリズムによる 次の様なダンプレベルシーケンスによって、毎日行います。

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

    毎日のダンプには、一週間毎に繰り返し使われる事になる 一定の数のテープを使う事ができます。 週毎にレベル 1 ダンプを行ない、毎日のハノイ・シーケンスは レベル 3 から開始します。 週毎のダンプには、ダンプするファイルシステム毎に、これも繰り返し 使われる事になる一定数のテープを使います。

何ヵ月かの後、毎日と毎週のテープはダンプサイクルから順に外し、 新品のテープを導入すべきです。

環境変数

TAPE
    バックアップを読み取るデバイス。

RMT リモートの rmt(8) プログラムのパス名。

RSH rsh(1) でない場合のリモートシェルプログラムのパス名。

関連ファイル
/dev/sa0
    デフォルトのダンプテープユニット
/etc/dumpdates
    ダンプの日付を記録するファイル (これは変更可能です。 -D オプションを参照してください)
/etc/fstab
    ダンプテーブル : ファイルシステムと頻度を決めるファイル
/etc/group
    operator グループを検索する

関連項目
chflags(1), fstab(5), restore(8), rmt(8)

診断
詳しいメッセージがたくさん出ます。

正常時は終了コード 0 で終了します。 開始時のエラーは終了コード 1 で、 異常終了は終了コード 3 で表されます。

バグ
32 個未満のファイルシステムからの読み取りエラーは無視されますが、 すべてのエラーは警告メッセージを生成します。 これはちょっとした妥協です。 現実には、マウント中のパーティションをダンプするとき、 dump 実行中にファイルシステムが更新されると、 読み取りエラーが生じ得ます。 ダンプはしばしば cron(8) を使って人が居ない状況で行われますので、 オペレータの介入を要する仕事は dump を駄目にしてしまいます。 この種の読み取りエラー発生時には 書き込まれたダンプテープには何も悪いところはありませんので、 dump を止める理由はなにもありません。

各リール (ボリューム) ごとに新たなプロセスが作られ、 リールを書き終った親プロセスは テープ全体の書き込みが終るまで待っています。

dump ユーティリティの -W や -w オプションは、 /etc/fstab にリストされていても、 dumpdates ファイル に記録のないファイルシステムについては報告しません。

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

セキュリティ的な歴史により、 dump ユーティリティは、 root 以外のユーザでリモートバックアップを行うことはできません。 これは、 FreeBSD の今後のバージョンでは修正されるでしょう。 現状では、(従来通り) setuid されていれば正常に動作しますが、 セキュリティ的なリスクを伴います。

歴史
dump ユーティリティは、 AT&T UNIX から登場しました。