DUMP(8)

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

書式
dump [-0123456789acknu] [-B records] [-b blocksize] [-D dumpdates] [-d density] [-f file] [-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
    出力ブロックあたりのキロバイト数です。 この値が 64 より大きい場合、コマンドは 64 を使用します (バグの節を参照してください)。 デフォルトのブロックサイズは 10 です。

-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 の値が優先されます。

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

-k  リモートのテープサーバとの通信でケルベロス認証を使います。 (このオプションが有効な状態で dump がコンパイルされた場合にのみ利用できます。)

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

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

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

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

-W  dump は、ダンプの必要があるファイルシステムをオペレータに表示します。 この情報は 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 から開始します。 週毎のダンプには、ダンプするファイルシステム毎に、これも繰り返し 使われる事になる一定数のテープを使います。

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

環境変数
環境変数 RMT は、リモートの rmt(8) プログラムのパス名を決定するのに用いられます。

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

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

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

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

バグ
32 個未満のファイルシステムからの読み取りエラーは無視されます。

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

現状では、 physio(9) スライスのリクエストは 64 KB の塊になります。したがって、それより大きな 出力ブロックサイズを使用することはできず、 dump はこれが発生するのを防ぎます。

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

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

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

歴史
dump コマンドは、 AT&T UNIX から登場しました。