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

名称

restore, rrestoredump コマンドで作ったバックアップからファイルやファイルシステムをリストアする

書式

restore -i [ -dDhmNuvy][ -b blocksize][ -f file | -P pipecommand][ -s fileno]

restore -R [ -dDNuvy][ -b blocksize][ -f file | -P pipecommand][ -s fileno]

restore -r [ -dDNuvy][ -b blocksize][ -f file | -P pipecommand][ -s fileno]

restore -t [ -dDhNuvy][ -b blocksize][ -f file | -P pipecommand][ -s fileno][ file ...]

restore -x [ -dDhmNuvy][ -b blocksize][ -f file | -P pipecommand][ -s fileno][ file ...]

解説

restore ユーティリティは、 dump(8) と逆の動作を行います。ファイルシステムの完全なリストアを行うには、まず、フルバックアップのリストアから始め、続いてその上にインクリメンタルバックアップをリストアします。フルまたは部分バックアップから、単一のファイルやディレクトリの部分ツリーのみをリストアすることも可能です。 restore ユーティリティは、ネットワークを介した動作も可能です。これを行うには、以下で説明されている -f-P フラグを参照してください。コマンドに与えるその他の引数は、リストアされるファイルを指定するためのファイルやディレクトリ名です。 -h フラグを指定していない限り (下記参照)、ディレクトリ名を指定することで、そのディレクトリ中のファイルや (再帰的に) サブディレクトリを指定することになります。

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

以下のいずれか 1 つ (複数指定不可) のフラグが必要です:

-i
バックアップからの対話的なリストアを行います。バックアップからディレクトリ情報を読み込むと、 restore は、ユーザに展開すべきファイルを選択させるために、シェルに似たインタフェースでコマンドを受け付けます。以下のコマンドが使用可能です。引数が必要なコマンドにおいて引数を省略すると、デフォルトとしてカレントディレクトリが使われます。
add [ arg]
カレントディレクトリまたは指定した引数のファイルを、リストアするファイルのリストに付け加えます。ディレクトリ名を指定した場合には、そのディレクトリの下のすべてのファイルが展開リストに加えられます (コマンドラインに -h フラグが指定されなかった場合)。 ls でファイルのリストを表示するときに、展開リストに含まれているファイルの頭には、``*'' がつけられています。
cd arg
カレントディレクトリを指定したディレクトリに移動します。
delete [ arg]
カレントディレクトリまたは引数で指定したファイル名のファイルを、展開するファイルのリストから削除します。ディレクトリ名を指定した場合には、そのディレクトリの下のすべてのファイルが展開リストから削除されます (コマンドラインに -h フラグが指定されなかった場合)。ディレクトリ中のほとんどのファイルを展開する場合には、ディレクトリ全体を展開リストに加えたあとで不要なファイルだけを削除するのが一番便利なやりかたです。
extract
展開ファイルリストにあるすべてのファイルをバックアップから展開します。 restore ユーティリティは、どのボリュームをマウントしたいかをユーザにたずねます。数個のファイルのみを展開するのにもっとも早い方法は、最終ボリュームから開始して最初のボリュームへと戻ることです。
help
利用できるコマンドの簡単な説明を表示します。
ls [ arg]
カレントディレクトリまたは指定されたディレクトリのリストを表示します。ディレクトリ名の後ろには、``/'' が付け加えられ、展開リストにあるファイルの前には、``*'' が加えられます。冗長フラグがセットされていた場合には、各ディレクトリエントリにあわせて inode 番号も表示されます。
pwd
カレントディレクトリのフルパス名を表示します。
quit
即座に中断します。展開リストに何かファイルがあったとしても終了します。
setmodes
展開リストにあるすべてのディレクトリの所有者、モード、時刻がセットされるのみで、バックアップからはなにも展開されません。これは、リストアを途中で中断してしまった時の後始末に有用です。
verbose
冗長フラグ -v の意味を反転します。冗長フラグがセットされている場合には、 ls コマンドは、すべてのエントリに対してその inode 番号を表示します。また、 restore コマンドは、ファイルを展開するたびにその情報を表示します。
what
ダンプヘッダ情報を表示します。これには、日付、レベル、ラベル、ダンプの元となったファイルシステムとホストが含まれます。
-R
フルリストアを再開するために、マルチボリュームのテープのうち特定のものをリストアすることを要求します (下記 -r フラグを参照)。これは、リストア動作を中断したときに使われます。
-r
リストア (ファイルシステムの再構築) を行います。レベル 0 バックアップのリストアの前には、リストア先となるファイルシステムは、 newfs(8) で初期化しておき、マウントして、そのディレクトリへ cd(1) で移動しておく必要があります。レベル 0 バックアップのリストアに成功したら、 -r フラグを指定することで、それに加えて必要なインクリメンタルバックアップをリストアすることができます。 -r フラグは、対話的なファイルリストアを行わないため、注意して扱わないと損害を与えることがあります (ディスクは言うに及ばず、精神的にも)。次のように実行します:

newfs /dev/da0s1a 
mount /dev/da0s1a /mnt 
cd /mnt 
 
restore rf /dev/sa0

restore は、インクリメンタルリストアのための情報を、ルートディレクトリの restoresymtable に記録します。このファイルは、すべての増分をリストアしたあとで削除すべきです。

restore ユーティリティを、 newfs(8)dump(8) と組み合わせることで、ファイルシステムのサイズやブロックサイズといったパラメータを変更するのに使うことができます。

-t
指定したファイル名のファイルがバックアップ中にあれば、その名前を表示します。ファイル名引数がない場合には、ルートディレクトリを表示するため、 -h フラグを指定していない限り、バックアップ中のすべてのファイルを表示することになります。 -t フラグは、古くからあった dumpdir(8) のかわりの機能を持つことに注意してください。
-x
メディアから、指定したファイルが読み出されます。指定ファイルがディレクトリで、そのディレクトリの内容がバックアップ中に存在し、かつ -h フラグが指定されていないときには、ディレクトリの内容が再帰的に展開されます。 (可能であれば) ファイルの所有者、修正日時、モードもリストアされます。もし引数が与えられていなければルートディレクトリを展開するため、 -h フラグを指定していない限り、結果的にバックアップ全体が展開されます。

以下の追加オプションを指定可能です:

-b blocksize
ダンプレコードあたりのキロバイト数です。 -b が指定されないときは、 restore は、メディアのブロックサイズを動的に求めようとします。
-d
冗長なデバッグ出力を標準エラーへ送ります。
-D
これは、 restore をデグレードモードにし、restore は、より効率的でない動作しますが、崩壊したバックアップを読み込む難しい試みを行います。
-f file
バックアップを file から読み込みます; file は、 /dev/sa0 (テープドライブ) や /dev/da1c (ディスクドライブ) といったスペシャルデバイスファイル、通常のファイル、‘ -’ (標準入力) のいずれかです。ファイル名が“host:file”や“user@host:file”という形式である場合は、 restore は、 rmt(8) を用いて指定したファイルを指定のホストから読み込みます。
-P pipecommand
pipecommand で定義された sh(1) スクリプト文字列をバックアップの各ボリュームに対する入力として実行するために popen(3) を使います。この子のパイプラインの 標準出力 ( /dev/fd/1) は、 restore の入力ストリームにリダイレクトされ、環境変数 RESTORE_VOLUME には、現在読み込まれているボリューム番号が設定されます。ボリュームを 1 つロードする毎に、それがテープドライブ 1 つであるかのように、 pipecommand スクリプトが開始されます。
-h
ディレクトリ名を指定された場合に、その中のファイルではなく、ディレクトリそのものを展開するようにします。これによって、ダンプからディレクトリのサブツリーを階層的に展開してしまうことを防ぎます。
-m
展開を、ファイル名ではなく inode 番号によって行います。これは、数個のファイルのみを展開したい場合で、ファイルの完全なパス名を再生することを防ぎたい場合に有用です。
-N
通常通り展開しますが、実際には、変更をディスクへ書き込みません。ダンプメディアの完全性の確認や他のテスト目的に使用可能です。
-s fileno
マルチファイルテープの fileno から読みます。ファイル番号は、1 から始まります。
-u
特定のタイプのファイルを作成する時に、リストア先ディレクトリに既に同名のファイルが存在する場合には、リストアは、警告診断を生成し得ます。この動作を抑制するために、 -u (アンリンク) フラグを指定すると、リストアは、古いエントリを削除してから新しいエントリを作成しようとします。
-v
普通、 restore は、何も表示せずにリストア動作を行います。 -v (verbose, 冗長) フラグを指定すると、扱うファイルのタイプとファイル名が表示されます。
-y
エラーが発生したときに、リストア動作を中断するかどうかの問い合わせを行いません。これによって、不良ブロックをスキップして、可能なかぎり動作を継続します。

環境変数

TAPE
バックアップを読み込むデバイス。
TMPDIR
一時ファイルが作成されるディレクトリの名前。

関連ファイル

/dev/sa0
デフォルトのテープドライブ
/tmp/rstdir*
テープ中のディレクトリを保持するファイル
/tmp/rstmode*
ディレクトリの所有者、モード、タイムスタンプ
./restoresymtable
インクリメンタルリストア間で渡される情報

診断

リードエラーが発生すると restore ユーティリティは、メッセージを表示します。もし、 -y が指定されているか、またはユーザが‘ y’の応答をしたならば、 restore は、リストアを続行しようとします。

バックアップが 1 巻より多くのテープボリュームに格納されていたならば、 restore は、次のボリュームをマウントすべき時点でそれをユーザに知らせます。もし、 -x または -i フラグが指定されていたら、 restore は、ユーザがマウントしたいのはどのボリュームであるかを問い合わせます。少数のファイルを最も早く展開する方法は、最終ボリュームから開始して、最初のボリュームへ向けて作業を進めることです。

restore は、数多くの一貫性検査を行っていて、それを表示します。ほとんどの検査結果の表示は、自明であるか、または「決して起こらない」ものです。良くあるエラーを以下に示します。

<filename>: not found on tape
指定したファイル名は、テープのディレクトリには記録されていましたが、テープのなかに本体が見当たりませんでした。このような事態が起きるのは、ファイルを探している間にテープのリードエラーが発生した場合や、稼働中のファイルシステムにおいて作成したダンプテープを使った場合です。

expected next file <inumber>, got <inumber>
ディレクトリに記録されていなかったファイルが示されます。稼働中のファイルシステムにおいて作成したダンプを使った場合に発生することがあります。

Incremental dump too low
インクリメンタルリストアを行う際に、ダンプが直前のインクリメンタルダンプよりも以前に書かれたものであったり、増分レベルが低すぎるダンプがロードされた場合に表示されます。

Incremental dump too high
インクリメンタルリストアを行う際に、ダンプが直前のインクリメンタルダンプの続きの範囲から開始していなかったり、または増分レベルが高すぎるダンプがロードされた場合に表示されます。

Tape read error while restoring <filename>
Tape read error while skipping over inode <inumber>
Tape read error while trying to resynchronize
テープ (またはその他の媒体) のリードエラーが発生しました。ファイル名が表示されていたならば、その内容は、おそらく部分的に不正なものになっているでしょう。もし inode がスキップされたり、テープの resynchronize (再同期) が試みられていたならば、展開されたファイルには、問題はありません。しかし、テープ上からいくつかのファイルを見つけることができないかもしれません。

resync restore, skipped <num> blocks
ダンプのリードエラーが発生した後に、おそらく restore は、自分自身で再同期をとらなければなりません。このメッセージは、スキップしたブロックの個数を表示します。

関連項目

dump(8), mount(8), newfs(8), rmt(8)

歴史

restore ユーティリティは、 4.2BSD で登場しました。

バグ

-L オプションなし ( dump(8) 参照) で動作中のファイルシステムで作成されたダンプからインクリメンタルリストアを行うとき、 restore ユーティリティは、混乱するかもしれません。

フルリストアの終了後には、レベル 0 ダンプを行う必要があります。 restore は、ユーザコードで動作するので、inode の割り当てを制御することができません。したがって、ファイルの内容が変更されていない場合でも、新しい inode 割り当てを新しいディレクトリ集合に反映させるためには、フルダンプを行わなければなりません。

ネットワークを介したリストアを行う場合、 root 権限で restore を実行する必要があります。これは、以前の dump と restore のセキュリティ上の歴史によるものです。 (restore は、root に setuid されて使われるように書かれていますが、 restore のコードから全てのバグが取れているとは思わないので、 setuid にて使用する場合は、自己の責任において行って下さい。)

一時ファイル /tmp/rstdir*/tmp/rstmode* は、ダンプの日付とプロセス ID に基づいて、ユニークに生成されます ( mktemp(3) を参照してください)。ただし -r または -R が使用された場合は、例外です。これは、中断された -r の動作を -R によって再開可能とするためであり、別々の処理において同一の一時ファイルを使用することが必要であるためです。他の場合には、ファイルは、ユニークです。これは、同時に 2 個の異なったダンプが開始する可能性があるためであり、別々の処理が衝突しないようにすべきだからです。

October 12, 2006 FreeBSD