EN JA
DUMP(8)
DUMP(8) FreeBSD System Manager's Manual DUMP(8)

名称

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

書式

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

dump -W | -w

解説

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

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

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

また、 dump は、 rdump として起動されます。 4.3BSD オプションの構文は、後方互換性のために実装されていますが、ここで文書化されていません。

次のオプションが 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
バックアップの出力先ファイル file を指定します。出力先ファイル 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”グループに属するすべてのユーザにメッセージを送ります。
-r
rsync フレンドリにします。通常、ダンプは、ダンプを通して、現在と前のダンプの日付を多数の場所に格納します。これらの点在している変更は、日付が各ダンプ毎にで変化するので、それらがレベル 0 のリモートコピーを更新するために使用されるとき、 rsync または別のインクリメンタル (増加) ファイル転送プログラムをかなり遅くします。このオプションは、ダンプファイルを転送するとき、 rsync がはるかに効率的であることを許可して、エポックへの両方の日付を設定します。
-R
さらに rsync フレンドリにします。このオプションは、実際の inode アクセス時刻の格納を無効にします (代わりに inode の更新時刻を格納します)。このオプションは、それらのアクセスタイム以外に変化しない多数のファイルでファイルシステムから生成されるダンプの転送のとき、rsync をさらに効率的にすることができます。 -R オプションは、 -r も設定します。
-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 ファイルから集められます。 -W オプションを指定すると、 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
-f オプションが使用されないなら、ダンプするための file またはデバイス。
RMT
リモートの rmt(8) プログラムのパス名。
RSH
rsh(1) でない場合のリモートシェルプログラムのパス名。

関連ファイル

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

終了ステータス

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

使用例

growisofs を使用して /u ファイルシステムを DVD にダンプします。 16MB のキャッシュを使用して、ダンプのスナップショットを作成して、 dumpdates ファイルを記録します。

/sbin/dump -0u  -L -C16 -B4589840 -P 'growisofs -Z /dev/cd0=/dev/fd/0' /u

診断

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

歴史

dump ユーティリティは、 Version 6 AT&T UNIX で登場しました。

バグ

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

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

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

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

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

February 24, 2006 FreeBSD