このパートでは、Solaris 環境でデータのバックアップを取る手順と復元する手順について説明します。次の章が含まれます。
ufsdump コマンドと ufsrestore コマンドを使用してデータのバックアップを取り、復元する際のガイドラインと計画について説明します。 |
|
個々のファイルとファイルシステム全体をローカルデバイスまたはリモートデバイスからバックアップする手順を説明します。 |
|
個々のファイルとファイルシステム全体を復元する詳しい手順を説明します。 |
|
ufsdump の機能、ufsdump コマンドと ufsrestore コマンドの構文とオプションについて説明します。 |
|
ファイルシステムをディスクにコピーする手順、dd、cpio、tar コマンドをさまざまなバックアップ媒体で使用する手順、ファイルを異なるヘッダー形式でコピーする手順について説明します。 |
|
テープドライブを追加する方法、テープドライブ、バックアップデバイス名を判断し、テープドライブと磁気テープカートリッジで作業する手順を説明します。 |
この章では、ufsdump コマンドと ufsrestore コマンドを使用し、ファイルシステム全体のバックアップをとって復元する際のガイドラインと計画の作成について説明します。
この章の内容は以下のとおりです。
Solaris 2.5 リリース以降が動作している NIS+ マスターサーバーをバックアップおよび復元するためには nisbackup コマンドと nisrestore コマンドを使用して下さい。これらのコマンドを使用する方法については、『Solaris ネーミングの管理』を参照してください。
ufsdump コマンドと ufsrestore コマンドを使用してファイルシステムをバックアップおよび復元する手順については、次を参照してください。
ファイルシステムのバックアップとは、消失、損傷、または破損に備えて、ファイルシステムを取り外し可能な媒体 (テープなど) にコピーすることを意味します。ファイルシステムの復元とは、最新のバックアップファイルを取り外し可能な媒体から作業ディレクトリにコピーすることを意味します。
この章では、「スケジュールされた」バックアップ処理と復元処理に使用するコマンド (ufsdump と ufsrestore) について説明しますが、他にもファイルを共有または転送するためにファイルとファイルシステムのコピーに使用できるコマンドがあります。表 33-1 は、個々のファイルやファイルシステムを媒体にコピーする各コマンドの説明箇所を示しています。
表 33-1 ファイルとファイルシステムをコピーするコマンド
操作 |
使用するコマンド |
参照先 |
---|---|---|
ファイルシステム全体または個々のファイルシステムをローカルまたはリモートのテープデバイスにコピーする |
ufsdump コマンド |
第 34 章「ファイルとファイルシステムのバックアップの手順」 または 第 36 章「ufsdump コマンドと ufsrestore コマンドの参照情報」 |
ネットワーク上のすべてのシステムのファイルシステム全体をサーバーからバックアップする |
Solstice BackupTM ソフトウェア | |
NIS+ マスターサーバーをバックアップ、復元する |
nisbackup コマンドと nisrestore コマンド | |
ファイルをテープ上でコピー、表示、検索する ファイルをフロッピーディスク上でコピー、表示、検索する |
tar、cpio、または pax コマンド tar コマンド | |
マスターディスクをクローンディスクにコピーする |
dd コマンド | |
ファイルシステム全体または個々のファイルシステムを、取り外し可能な媒体から作業ディレクトリに復元する |
ufsrestore コマンド |
ファイルのバックアップは、最も重要なシステム管理作業の 1 つです。次のような原因によるデータの消失に備えて、定期的にバックアップを実行する必要があります。
システムのクラッシュ
不注意によるファイルの削除
ハードウェア障害
天災 (火災、台風など)
システムをインストールし直したりアップグレードするときの問題
表 33-2 は、バックアップ処理中にファイルシステムを格納するための典型的なテープデバイスを示しています。テープデバイスについての詳細は、第 38 章「テープドライブの管理手順」を参照してください。
表 33-2 ファイルシステムのバックアップに使用する典型的な媒体
頻繁に変化するファイルシステムなど、ユーザーにとって重要なファイルシステムはバックアップしておく必要があります。表 33-3 と 表 33-4 は、スタンドアロンシステムとサーバー用にバックアップを作成するファイルシステムの一般的なガイドラインを示しています。
表 33-3 ファイルシステムをスタンドアロン用にバックアップする表 33-4 ファイルシステムをサーバー用にバックアップする
サーバーの /export/swap のバックアップを作成する必要はありません。
ufsdump コマンドと ufsrestore コマンドは、ファイルシステム全体のバックアップを定期的に実行する場合の推奨コマンドです。表 33-5 は、この 2 つのコマンドで実行できる作業を示しています。各コマンドの機能と構文については、第 36 章「ufsdump コマンドと ufsrestore コマンドの参照情報」を参照してください。
表 33-5 ufsdump と ufsrestore で実行できる作業
コマンド |
実行できる作業 |
備考 |
---|---|---|
ufsdump
|
|
|
|
ファイルシステム全体または個々のファイルシステムのバックアップを、ローカルまたはリモートのテープドライブに作成する。 |
テープデバイスは、ネットワーク内でユーザーがアクセスするどのシステム上にあってもかまわない。このコマンドは UFS ファイルシステムタイプの構造を認識し、raw デバイスファイル経由で直接処理するので高速である。 |
|
増分バックアップの実行 |
これにより、前回のバックアップ以降に変更があったファイルのバックアップのみを作成できる。 |
|
単一システムからネットワーク経由でシステムグループをバックアップする。
|
あるシステムから、リモートシェルまたはリモートログインを通じて、各リモートシステム上で ufsdump を実行し、ドライブがあるシステムに出力を転送できる。また、出力を dd コマンドにパイプできる。 |
|
自動バックアップ
|
ufsdump コマンドを起動するスクリプトを呼び出す crontab ユーティリティを使用する。 |
|
バックアップテーブルへのユーザーアクセスを制限する |
-a オプションを使用する。 |
|
実際にバックアップを実行せずに、バックアップのサイズを決定する |
-S オプションを使用する。 |
|
各ダンプレコードのログファイルを保管する |
-u オプションを使用する。 |
|
テープの内容をソースファイルシステムと対照して検査する |
-v オプションを使用する。 |
ufsrestore |
|
|
|
個々のファイルシステムまたはファイルシステム全体を、ローカルまたはリモートのテープドライブから復元する |
|
ufsdump コマンドを使用すると、完全バックアップまたは増分バックアップを実行できます。表 33-6 は、この 2 つのタイプのバックアップ手順の違いを示しています。
表 33-6 完全バックアップと増分バックアップの違い
バックアップのタイプ |
コピー内容 |
長所 |
短所 |
---|---|---|---|
完全 |
ファイルシステム内の小さな変化を検索しなくてすむ。 |
大量のバックアップテープが必要であり、書き込みに時間がかかる。ドライブはテープ上でファイルが入っている位置に順番に移動しなければならないので、個々のファイルの検索時間が長くなる。 |
|
増分 |
ファイルシステム内の小さな変化を簡単に検索できる。 |
どの増分テープにファイルが入っているかを探すのに時間がかかることがある。 |
「バックアップスケジュール」とは、ufsdump コマンドを実行するように設定するスケジュールです。この節では、バックアップスケジュールを作成する際に検討すべき要素、ファイルシステムのバックアップ頻度に関するガイドライン、バックアップスケジュールの例について説明します。
どのようなスケジュールを設定するかは、次の要素によって左右されます。
テープの本数を最小限度に抑える必要があるかどうか
バックアップの実行に使用できる時間
損傷したファイルシステムの完全復元に使用できる時間
不注意に削除した個々のファイルの検索に使用できる時間
バックアップに費やす時間と媒体を最小限度に抑える必要がない場合は、完全バックアップを毎日実行してもかまいません。しかし、多くのサイトの場合、これは現実的ではないので、ほとんどの場合は増分バックアップが使用されます。その場合は、サイトが過去 4 週間分のバックアップからファイルを復元できるようにしてください。そのためには、少なくとも 1 週分ごとに 1 組ずつ、合計 4 組のテープが必要で、各組を毎月使い廻することになります。また、少なくとも一年分の月別のバックアップを保存し、数年分の年度別バックアップを保管しておく必要があります。
ufsdump コマンドで指定するダンプレベル (0-9) によって、どのファイルのバックアップが作成されるかが決まります。ダンプレベル 0 を指定すると、完全バックアップが作成されます。1 から 9 までの番号は、増分バックアップのスケジュール設定に使用されますが、特に意味が定義されているわけではありません。これらの番号は、累積バックアップまたは個別バックアップのスケジュール設定に使用する番号の範囲にすぎません。レベル 1 から 9 までが意味するのは、大小による相互関係だけです。
次の例は、1 から 9 までのレベルを使用する増分ダンプ手順を示しています。
累積増分バックアップを毎日実行するのが、最も一般に使用される方法で、ほとんどの場合に推奨できます。次の例は、毎日レベル 9 のダンプを使用し、金曜日にはレベル 5 のダンプを使用してプロセスを再開するスケジュールを示しています。
次の例で、1 から 9 までの範囲内で他の番号を使用しても同じ結果になります。ポイントは、毎日同じ番号を使用し、金曜日にはそれより「 小さい」番号を使用することです。たとえば、レベル 4、4、4、4、2 や 7、7、7、7、5 を指定してもかまいません。
次の例は、1 日分の作業内容のみを別々のテープ上で保存するスケジュールを示しています。この場合、月曜日から木曜日までは連続するダンプレベル番号 (3、4、5、6) を使用し、金曜日にはそれより小さい番号 (2) を使用します。
次の例では、連番 6、7、8、9 の次に 2 を使用しても、5、6、7、8 の次に 3 を使用してもかまいません。番号自体の意味は定義されておらず、その大小に意味があります。
この節では、バックアップスケジュールのサンプルを示します。どのスケジュールも、完全バックアップ (レベル 0) から始めることと、-u オプションを使用して各バックアップを記録することを前提としています。
表 33-7 は、最も一般的に使用される増分バックアップをスケジュールを示しています。これは、ほとんどの場合に推奨できるスケジュールです。
表 33-7 日単位累積/週単位累積バックアップスケジュール
未固定 |
月 |
火 |
水 |
木 |
金 |
|
---|---|---|---|---|---|---|
月の 1 日目 |
0 |
|
|
|
|
|
第 1 週 |
9 |
9 |
9 |
9 |
5 |
|
第 2 週 |
9 |
9 |
9 |
9 |
5 |
|
第 3 週 |
9 |
9 |
9 |
9 |
5 |
|
第 4 週 |
9 |
9 |
9 |
9 |
5 |
このスケジュールで実行される処理は次のとおりです。
各週のテープには、前週の終わり (第 1 週の場合は初期レベル 0) 以降に変更があったすべてのファイルが累積される。
毎週金曜のテープには、最初のレベル 0 以降に変更があったすべてのファイルが入っている。レベル 9 のバックアップの場合は、直前のレベル 0 またはレベル 5 が下位レベルで最も近いバックアップである。
前週の終りの下位レベルのバックアップ以降に変更があったすべてのファイルが毎日保存される。
毎週金曜日のレベル 5 の場合、レベルのうち一番近いレベルのバックアップは、月初めに実行されたレベル 0 である。したがって、毎週金曜日のテープには、月初めからその時点までに変更があったすべてのファイルが入っている。
表 33-8 は、テープの内容が 2 週間でどのように変化するかを示しています。
月曜日 |
火曜日 |
水曜日 |
木曜日 |
金曜日 |
|
---|---|---|---|---|---|
第 1 週 |
a b |
a b c |
a b c d |
a b c d e |
a b c d e f |
第 2 週 |
g |
g h |
g h i |
g h i j |
a b c d e f g h i j k |
表 33-9 は、各曜日のテープに月曜日 (第 1 週の場合は初期レベル 0) 以降に変更があったすべてのファイルが累積され、毎週金曜日のテープにはその週に変更があったすべてのファイルが入っているスケジュールを示しています。
表 33-9 日単位累積/週単位増分バックアップスケジュール
未固定 |
月 |
火 |
水 |
木 |
金 |
|
---|---|---|---|---|---|---|
月の 1 日目 |
0 |
|
|
|
|
|
第 1 週 |
9 |
9 |
9 |
9 |
3 |
|
第 2 週 |
9 |
9 |
9 |
9 |
4 |
|
第 3 週 |
9 |
9 |
9 |
9 |
5 |
|
第 4 週 |
9 |
9 |
9 |
9 |
6 |
表 33-10 は、テープの内容が 2 週間でどのように変化するかを示しています。
表 33-10 日単位累積/週単位増分スケジュールのテープの内容
月曜日 |
火曜日 |
水曜日 |
木曜日 |
金曜日 |
|
---|---|---|---|---|---|
第 1 週 |
a b |
a b c |
a b c d |
a b c d e |
a b c d e f |
第 2 週 |
g |
g h |
g h i |
g h i j |
g h i j k |
このスケジュールでは、6 本 (日単位テープを再利用したい場合) または 9 本 (曜日ごとに 4 本の日単位テープを別々に使用したい場合) のテープが必要になります。その内訳は、レベル 0 に 1 本、金曜日用に 4 本、日単位テープ用に 1 本または 4 本です。
ファイルシステム全体を復元する必要があれば、5 本のテープが必要になります。その内訳は、レベル 0 が 1 本、前週までの毎週金曜日のテープ (3 本)、最新の日単位テープ 1 本です。
表 33-11 は、各曜日のテープには前日以降に変更があったファイルのみが入っており、毎金曜日のテープには月初めの初期レベル 0 以降に変更があったすべてのファイルが入っているスケジュールを示しています。
表 33-11 日単位増分/週単位累積バックアップスケジュール
未固定 |
月 |
火 |
水 |
木 |
金 |
|
---|---|---|---|---|---|---|
月の 1 日目 |
0 |
|
|
|
|
|
第 2 週 |
3 |
4 |
5 |
6 |
2 |
|
第 3 週 |
3 |
4 |
5 |
6 |
2 |
|
第 4 週 |
3 |
4 |
5 |
6 |
2 |
表 33-12 は、テープの内容が 2 週間でどのように変化するかを示しています。
表 33-12 日単位累積/週単位累積バックアップスケジュールのテープの内容
月曜日 |
火曜日 |
水曜日 |
木曜日 |
金曜日 |
|
---|---|---|---|---|---|
第 1 週 |
a b |
c d |
e f g |
h |
a b c d e f g h i |
第 2 週 |
j k l |
m |
n o |
p q |
a b c d e f g h i j k l m n o p q r s |
このスケジュールでは、少なくとも 9 本のテープが必要になります。その内訳は、レベル 0 に 1 本、金曜日用に 4 本、日単位テープ 4 本ですが、これは日単位テープを毎週再利用することが前提となっており、お勧めできません。週単位テープを 1 カ月保存する場合は、21 本のテープが必要になります。
ファイルシステム全体を復元する必要があれば、6 本のテープが必要になります。その内訳は、レベル 0 に 1 本、前回の金曜日のテープ、その週のすべての日単位テープです。
表 33-13 は、ユーザーがプログラム開発や文書作成のようなファイル集約型の作業を実行する小型ネットワーク上の、使用頻度の高いファイルサーバーのバックアップ方針の例を示しています。この例は、バックアップ期間が日曜日に始まり、7 日間 4 週間からなっているものと想定しています。
表 33-13 サンプルサーバーのバックアップスケジュール
ディレクトリ |
日付 |
レベル |
テープ名 |
---|---|---|---|
/ |
第 1 日曜日 |
0 |
n 個のテープ |
/usr |
第 1 日曜日 |
0 |
" |
/export |
第 1 日曜日 |
0 |
" |
/export/home |
第 1 日曜日 |
0 |
" |
|
第 1 月曜日 |
9 |
A |
|
第 1 火曜日 |
9 |
B |
|
第 1 水曜日 |
5 |
C |
|
第 1 木曜日 |
9 |
D |
|
第 1 金曜日 |
9 |
E |
|
第 1 土曜日 |
5 |
F |
/ |
第 2 日曜日 |
0 |
n 個のテープ |
/usr |
第 2 日曜日 |
0 |
" |
/export |
第 2 日曜日 |
0 |
" |
/export/home |
第 2 日曜日 |
0 |
" |
|
第 2 月曜日 |
9 |
G |
|
第 2 火曜日 |
9 |
H |
|
第 2 水曜日 |
5 |
I |
|
第 2 木曜日 |
9 |
J |
|
第 2 金曜日 |
9 |
K |
|
第 2 土曜日 |
5 |
L |
/ |
第 3 日曜日 |
0 |
n 個のテープ |
/usr |
第 3 日曜日 |
0 |
" |
/export |
第 3 日曜日 |
0 |
" |
/export/home |
第 3 日曜日 |
0 |
" |
|
第 3 月曜日 |
9 |
M |
|
第 3 火曜日 |
9 |
N |
|
第 3 水曜日 |
5 |
O |
|
第 3 木曜日 |
9 |
P |
|
第 3 金曜日 |
9 |
Q |
|
第 3 土曜日 |
5 |
R |
/ |
第 4 日曜日 |
0 |
n 個のテープ |
/usr |
第 4 日曜日 |
0 |
" |
/export |
第 4 日曜日 |
0 |
" |
/export/home |
第 4 日曜日 |
0 |
" |
|
第 4 月曜日 |
9 |
S |
|
第 4 火曜日 |
9 |
T |
|
第 4 水曜日 |
5 |
U |
|
第 4 木曜日 |
9 |
V |
|
第 4 金曜日 |
9 |
W |
|
第 4 土曜日 |
5 |
X |
このスケジュールでは、4 n 本のテープ (ルート(/)、/usr、/export、/export/home の 4 回の完全バックアップに必要な本数) に加えて、/export/home の増分バックアップ用に 24 本のテープを使用します。このスケジュールは、増分バックアップごとに 1 本ずつテープを使用し、それを 1 カ月は保存することを前提としています。
このスケジュールの機能は次のとおりです。
日曜日ごとに、ルート(/)、/usr、/export、/export/home の完全バックアップ (レベル 0) を実行します。レベル 0 のテープを少なくとも 3 カ月は保存します。
月の第 1 月曜日に、テープ A を使用して /export/home のレベル 9 のバックアップを実行します。ufsdump は下のレベルのバックアップ、この場合は日曜日に実行したレベル 0 のバックアップ以降に変更があったすべてのファイルをコピーします。
月の第 1 火曜日に、テープ B を使用して /export/home のレベル 9 のバックアップを実行します。この場合も、ufsdump は、下のレベル、つまり日曜日のレベル 0 のバックアップ以降に変更があったすべてのファイルをコピーします。
第 1 水曜日に、テープ C を使用してレベル 5 のバックアップを実行します。ufsdump は日曜日以降に変更があったすべてのファイルをコピーします。
木曜日と金曜日には、テープ D と E を使用してレベル 9 のバックアップを実行します。ufsdump は、下のレベルのバックアップ、つまり水曜日のレベル 5 のバックアップ以降に変更があったすべてのファイルをコピーします。
月の第 1 土曜日に、/export/home のレベル 5 のバックアップを実行します。このバックアップでは、下のレベルのバックアップ、この場合は日曜日に実行したレベル 0 のバックアップ以降に変更があったすべてのファイルがコピーされます。テープを再利用する場合は、テープ A から F までを次の 4 週間の第 1 月曜日までは保存しておきます。
次の 3 週間は、テープ G から L までと、日曜日のレベル 0 用に 4 n 本のテープを使用して、手順 1 から 6 までを繰り返します。
4 週ごとに、レベル 0 用に新しいテープ 1 組と、増分バックアップ用のテープ A から X までを再利用して、手順 1 から 7 までを繰り返します。レベル 0 のテープは、3 カ月後に再利用できるようになります。
このスケジュールでは、各ファイルを 1 カ月間で段階別に保存できます。多数のテープが必要ですが、テープのライブラリを確実に用意できます。テープの本数を減らすには、テープ A から F までを毎週再利用します。
表 33-14 は、バックアップスケジュールに関する他の推奨事項を示しています。
表 33-14 システムのバックアップスケジュールに関する他の推奨事項
この章では、ufsdump コマンドを使用してファイルシステムのバックアップを行う手順について説明します。
この章の内容は以下のとおりです。
ufsdump コマンドの構文、オプション、引数についての詳細は、第 36 章「ufsdump コマンドと ufsrestore コマンドの参照情報」を参照してください。
ファイルシステムのバックアップを実行する準備は、計画の作成から始まります。詳細については、第 33 章「ファイルシステムのバックアップと復元の概要」を参照してください。この段階では、次の項目を決定します。
テープドライブ
バックアップを作成するファイルシステム
バックアップのタイプ (完全または増分)
バックアップのスケジュール
この節では、次のように、ファイルシステムのバックアップを作成する前に実行しておかなければならない作業について説明します。
バックアップを作成するファイルシステムの名前を検索する。
完全バックアップをとるために必要なテープの本数を決定する。
/etc/vfstab ファイルの内容を表示します。
$ more /etc/vfstab
mount point カラムに表示されるファイルシステム名を調べます。
ファイルシステムをバックアップするときには、mount point カラムのマウントポイントを使用することになります。
$ more /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /proc - /proc proc - no - swap - /tmp tmpfs - yes - /dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0 / ufs 1 no - /dev/dsk/c0t3d0s1 - - swap - no - /dev/dsk/c0t1d0s6 /dev/rdsk/c0t1d0s6 /usr ufs 2 no - mars:/share/kit - /kit nfs - yes - mars:/db/doc - /db/doc nfs - yes -
スーパーユーザーになります。
usfdump S コマンドを使用して、バックアップのサイズをバイト単位で見積もります。
# ufsdump S filesystem
S |
バックアップの実行に必要な予想バイト数を表示する。 |
予想バイト数をテープの容量で除算して、必要な本数を調べます。
テープの容量リストについては、表 33-2 を参照してください。
次の例では、150M バイトのテープに 489472 バイトのファイルシステムが入ります。
# ufsdump S /export/home 489472
バックアップを実行する際の一般的なガイドラインは次のとおりです。
シングルユーザーモードを使用するか、ファイルシステムをマウント解除する。
ディレクトリレベルの処理 (ファイルの作成、削除、名前変更など) とファイルレベルの処理が行われているときにファイルシステムのバックアップを実行すると、バックアップに組み込まれないデータがあるので注意する。
1 台のシステムから ufsdump コマンドを実行し、リモートシェルまたはリモートログインを通じてネットワーク上のシステムグループのバックアップを実行し、その出力をテープドライブがあるシステムに転送できる (通常、テープドライブは ufsdump コマンドを実行するシステム上にあるが、他の場所にあってもかまわない)。
ファイルのバックアップをリモートドライブに作成するには、ufsdump コマンドの出力を dd コマンドにパイプする方法もある。dd コマンドの使用方法については、第 37 章「UFS ファイルとファイルシステムのコピー手順」を参照。
ネットワーク上でリモートバックアップを実行する場合は、バックアップを開始するシステムの /.rhosts ファイル内に、バックアップを実行するホストのエントリがなければならない。
システム上でリモートドライブを指定するには、リモートテープドライブを持つシステムの OS バージョンと一致する命名規則を使用する。たとえば、SunOS 4.1.x を実行中のシステム上のリモートドライブには /dev/rst0 を使用し、Solaris 2.x を実行中のシステムには /dev/rmt/0 を使用する。
Solaris 2.5 リリース以降が動作している NIS+ マスターサーバーをバックアップするためには nisbackup コマンドを使用して下さい。このコマンドを使用する方法については、『Solaris ネーミングの管理』を参照してください。
次は、ufsdump コマンドを使用してファイルシステムのバックアップを作成する一般的な手順です。この中の例では、オプションと引数の使用方法を示しています。
スーパーユーザーになります。
システムを停止します。
# init 0
システムをレベル S (シングルユーザーモード) にします。
ok boot -s
[省略可能] fsck コマンドを使用してファイルシステムの整合性をチェックします。
-m オプションを使用して fsck コマンドを実行すると、ファイルシステムの整合性がチェックされます。たとえば、電源障害が発生すると、ファイルが非整合状態になることがあります。fsck コマンドについての詳細は、第 31 章「ファイルシステムの完全性チェック」を参照してください。
# fsck -m /dev/rdsk/ device-name
ファイルシステムをリモートテープドライブにバックアップする場合
テープドライブのデバイス名を確認します。
デフォルトのテープドライブは、/dev/rmt/0 です。
書き込み保護されていないテープをテープドライブに挿入します。
ufsdump コマンドを使用してファイルシステムのバックアップを作成します。
次の表を使用して、ufsdump コマンドの最も一般的なオプションと引数を選択します。他のオプションと引数については、第 36 章「ufsdump コマンドと ufsrestore コマンドの参照情報」を参照してください。
操作 |
使用するオプションまたは引数 |
例 |
参照先 |
---|---|---|---|
完全バックアップを実行する |
0 オプション |
ufsdump 0ucf /dev/rmt/n files | |
増分バックアップを実行する |
1 から 9 までのオプション |
ufsdump 9ucf /dev/rmt/n files | |
個々のファイルのバックアップを実行する |
filename 引数 |
ufsdump 9ucf /dev/rmt/n /export/home/user1/mail | |
ダンプを /etc/dumpdates ファイルに記録する |
-u オプション (ファイルを更新) |
ufsdump 9ucf /dev/rmt/n files | |
カートリッジテープを指定する |
-c オプション |
ufsdump 9ucf /dev/rmt/n files | |
テープドライブのファイル名を指定する |
-f dump-file |
ufsdump 9ucf /dev/rmt/1 files | |
ローカルファイルシステムをリモートホストのテープデバイスにバックアップする |
remote-host: 引数 |
ufsdump 0ucf mars:/dev/rmt/0 files |
「例 - リモートシステムへの完全バックアップ (Solaris 2.x のデータを Solaris 2.x システムへ)」 |
プロンプトが表示されたら、テープを取り出して次のテープと交換します。
各テープにボリューム番号、レベル、日付、システム名、ファイルシステム名を記入したラベルを貼ります。
Control-d キーを押してシステムをレベル 3 の動作に戻します。
ufsrestore コマンドでテープの内容を表示して、バックアップが成功していることを確認します。
このコマンドは、第 35 章「ファイルとファイルシステムの復元の手順」で説明します。
次の例では、ルート (/) ファイルシステムの完全バックアップが 150M バイトのカートリッジテープ (/dev/rmt/0) 上に作成されます。
# init 0 ok boot -s # ufsdump 0ucf /dev/rmt/0 / DUMP: Writing 63 Kilobyte records DUMP: Date of this level 0 dump: Wed Nov 06 15:32:21 1996 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t3d0s0 (mars:/) to /dev/rmt/0. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Estimated 41236 blocks (20.13MB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: Tape rewinding DUMP: 41200 blocks (20.12MB) on 1 volume at 95 KB/sec DUMP: DUMP IS DONE DUMP: Level 0 dump on Wed Nov 06 15:32:21 1996 # ufsrestore tf /dev/rmt/0 (Verification starts here) 2 . 3 ./lost+found 5696 ./usr 11392 ./export 17088 ./opt 22784 ./var 28480 ./var/sadm 34176 ./var/sadm/install 39872 ./var/sadm/install/admin 39879 ./var/sadm/install/admin/default . . . # # (Press Control-D to bring system to run level 3)
次の例では、/export/home ファイルシステムの完全バックアップが 4 mm のテープ上に作成されます。
# ufsdump 0ucf /dev/rmt/0 /export/home DUMP: Writing 63 Kilobyte records DUMP: Date of this level 0 dump: Wed Nov 06 16:18:08 1996 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t3d0s7 (mars:/export/home) to /dev/rmt/0. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Estimated 13504 blocks (6.59MB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: Tape rewinding DUMP: 13480 blocks (6.58MB) on 1 volume at 92 KB/sec DUMP: DUMP IS DONE DUMP: Level 0 dump on Wed Nov 06 16:18:08 1996 # ufsrestore tf /dev/rmt/0 113920 ./x97_sysmgt 159488 ./kryten 159489 ./kryten/.login 159490 ./kryten/.cshrc 170880 ./kryten/directives 170882 ./kryten/directives/directive.2001 170883 ./kryten/directives/directive.450b 170881 ./kryten/directives/directive.115c 159491 ./kryten/tar_file . . . #
この例では、ルート (/) ファイルシステムの増分バックアップを 4 mm の DAT テープデバイスに行ないます。
# ufsdump 9ucf /dev/rmt/0 / DUMP: Writing 63 Kilobyte records DUMP: Date of this level 9 dump: Wed Nov 06 16:14:51 1996 DUMP: Date of last level 0 dump: Wed Nov 06 15:32:21 1996 DUMP: Dumping /dev/rdsk/c0t3d0s0 (mars:/) to /dev/rmt/0. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Mapping (Pass II) [directories] DUMP: Mapping (Pass II) [directories] DUMP: Mapping (Pass II) [directories] DUMP: Mapping (Pass II) [directories] DUMP: Mapping (Pass II) [directories] DUMP: Estimated 3708 blocks (1.81MB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: Tape rewinding DUMP: 3652 blocks (1.78MB) on 1 volume at 75 KB/sec DUMP: DUMP IS DONE DUMP: Level 9 dump on Wed Nov 06 16:14:51 1996 # ufsrestore tf /dev/rmt/0 2 . 10752 ./var 13440 ./var/sadm 2689 ./var/sadm/install 2690 ./var/sadm/install/.lockfile 2766 ./var/sadm/install/contents 10753 ./var/sadm/pkg 2734 ./var/adm 2780 ./var/adm/sa 2951 ./var/adm/sa/sa24 2735 ./var/cron 2885 ./var/cron/log 8086 ./var/spool 8087 ./var/spool/locks 8088 ./var/tmp #
この例では、/export/home/kryten ディレクトリの完全バックアップを 4 mm DAT テープに行ないます。
# ufsdump 0ucf /dev/rmt/0 /export/home/kryten DUMP: Writing 63 Kilobyte records DUMP: Date of this level 0 dump: Wed Nov 06 16:12:41 1996 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t3d0s7 (mars:/export/home) to /dev/rmt/0. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Estimated 280 blocks (140KB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: Tape rewinding DUMP: 250 blocks (125KB) on 1 volume at 15 KB/sec DUMP: DUMP IS DONE # ufsrestore tf /dev/rmt/0 2 . 2688 ./kryten 5409 ./kryten/letters 5410 ./kryten/letters/letter1 5411 ./kryten/letters/letter2 5412 ./kryten/letters/letter3 2689 ./kryten/.profile 8096 ./kryten/memos 30 ./kryten/reports 31 ./kryten/reports/reportA 32 ./kryten/reports/reportB 33 ./kryten/reports/reportC #
次の例では、Solaris 2.x システム上のローカルの /export/home ファイルシステムが、リモートの Solaris 2.x システム pluto 上のテープデバイスにバックアップされます。
# ufsdump 0ucf pluto:/dev/rmt/0 /export/home DUMP: Writing 63 Kilobyte records DUMP: Date of this level 0 dump: Fri Oct 25 10:30:53 1996 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t3d0s7 (/export/home) to (pluto:/dev/rmt/0). DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 19574 blocks (9.56MB) DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: level 0 dump on Fri Oct 25 10:30:53 1996 DUMP: Tape rewinding DUMP: 19574 blocks (9.56MB) on 1 volume at 92 KB/sec DUMP: DUMP IS DONE # ufsrestore tf pluto:/dev/rmt/0 2 . 3 ./lost+found 2688 ./kryten 5409 ./kryten/letters 5410 ./kryten/letters/letter1 5411 ./kryten/letters/letter2 5412 ./kryten/letters/letter3 2689 ./kryten/.profile 8096 ./kryten/memos 30 ./kryten/reports 31 ./kryten/reports/reportA 32 ./kryten/reports/reportB 33 ./kryten/reports/reportC . . . #
次の例では、Solaris 2.x システム上のローカルの /export/home ファイルシステムが、リモートの SunOS 4.1.x システム (mars) 上のテープデバイスにバックアップされます。ufsdump コマンドといっしょに SunOS 4.x スタイルのデバイス名 (/dev/rst0) が使用されているので注意してください。ufsdump コマンドを実行するには、Solaris 2.x システムにスーパーユーザーとしてログインすることになります。
# ufsdump 0ucf mars:/dev/rst0 /export/home DUMP: Writing 63 Kilobyte records DUMP: Date of this level 0 dump: Fri Oct 25 15:06:47 1996 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t3d0s7 (/export/home) to (mars:/dev/rst0). DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 19574 blocks (9.56MB) DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: level 0 dump on Fri Oct 25 15:06:47 1996 DUMP: Tape rewinding DUMP: 19574 blocks (9.56MB) on 1 volume DUMP: DUMP IS DONE # ufsrestore tf mars:/dev/rst0 2 . 3 ./lost+found 2688 ./kryten 5409 ./kryten/letters 5410 ./kryten/letters/letter1 5411 ./kryten/letters/letter2 5412 ./kryten/letters/letter3 2689 ./kryten/.profile 8096 ./kryten/memos 30 ./kryten/reports 31 ./kryten/reports/reportA 32 ./kryten/reports/reportB 33 ./kryten/reports/reportC . . . #
次の例では、Sun 4.1.x システム (mars) 上のローカルのルート (/) ファイルシステムが、Solaris 2.x システム pluto 上のリモートテープデバイスにバックアップされます。
データを SunOS 4.1.x システムにバックアップするときには、ufsdump コマンドではなく dump コマンドを使用しなければならないので注意してください。
mars# dump 0ucf pluto:/dev/rmt/0 / DUMP: Date of this level 0 dump: Tue Oct 25 16:05:19 1996 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rsd2a (/) to /dev/rmt/0 on host pluto DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 8686 blocks (4.24MB) on 0.10 tape(s). DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: level 0 dump on Tue Oct 25 16:05:19 1996 DUMP: Tape rewinding DUMP: 8690 blocks (4.24MB) on 1 volume DUMP: DUMP IS DONE mars# restore tf pluto:/dev/rmt/0 2 . 3 ./lost+found 3776 ./export 7552 ./home 11328 ./usr 15104 ./pcfs 3777 ./tftpboot 3778 ./tftpboot/tftpboot 3794 ./tftpboot/boot.sun4c.sunos.4.1.3 7553 ./etc 7554 ./etc/sendmail.cf 7555 ./etc/aliases 7556 ./etc/aliases.dir 7557 ./etc/aliases.pag 7558 ./etc/holidays 7559 ./etc/dumpdates . . . mars#
この章では、ファイルシステムを復元する手順について説明します。
この章で説明する手順は次のとおりです。
この章では、ufsdump コマンドによりバックアップしたファイルやファイルシステムを復元する場合の、ufsrestore(1M) コマンドの使用方法を説明します。ファイルやファイルシステムをアーカイブ、復元、コピー、または移動できる他のコマンドについては、第 37 章「UFS ファイルとファイルシステムのコピー手順」を参照してください。
ufsrestore コマンドを使うと、ファイルが ufsdump コマンドで作成したバックアップから現在の作業ディレクトリにコピーされます。ufsrestore を使うと、ファイルシステムの階層構造全体をレベル 0 ダンプとそのあとに行われる増分ダンプから再ロードしたり、複数のファイルを任意のダンプテープから復元できます。ufsrestore がスーパーユーザーによって実行される場合には、ファイルはそのオリジナルの所有者、最新の変更時刻、モード (許可) といっしょに復元されます。
ファイルやファイルシステムの復元を始める前に、次の内容を知っておく必要があります。
必要なテープ (またはフロッピーディスク) はどれか
バックアップをとりたいファイルシステムの raw デバイス名
使用しようとするテープドライブのタイプ
テープドライブのデバイス名 (ローカルまたはリモート)
バックアップテープに適切な名前が付いている場合は、テープラベルに入っているディスクデバイス名 (/dev/rdsk/devicename) が使えるはずです。詳細は、「ファイルシステム名を検索する方法」を参照してください。
ファイルを復元するには、バックアップ媒体と互換性のあるテープドライブを使用しなければなりません。バックアップ媒体の形式によって、ファイルの復元にどんなドライブを使用しなければならないかが決まります。たとえば、使用するバックアップ媒体が 8mm テープの場合、ファイルの復元には 8mm テープドライブを使わなければなりません。
テープデバイス名 (/dev/rmt/n) をバックアップテープラベル情報の一部として指定しているかも知れません。同じドライブを使ってバックアップテープを復元しようとする場合には、ラベル内にあるデバイス名を使うことができます。媒体のデバイスとデバイス名についての詳細は、第 38 章「テープドライブの管理手順」を参照してください。
ファイルシステムは全面的に復元しなければならないほど破壊される場合があります。一般的な例として、ディスクヘッドが破損した場合は、ファイルシステムは全面的に復元しなければなりません。ただし、ソフトウェアを復元する前に、ハードウェアを取り替える必要があります。ディスクの取り替え方については、第 23 章「SPARC: ディスク追加の手順」または第 24 章「x86 : ディスク追加の手順」を参照してください。/export/home などのファイルシステムを全面的に復元するには、長時間かかります。ファイルシステムを一貫性のある方法でバックアップしていれば、最後の増分バックアップ時の状態に復元することができます。
この節では、ローカルテープドライブを使って個別のファイルやディレクトリを復元する方法を説明します。リモートドライブを使ってファイルを復元する方法についての詳細は、「リモートドライブを使ってファイルを復元する方法」を参照してください。
ファイルシステムのルートディレクトリではなく、ディレクトリ内にファイルを復元する場合には、ufsrestore によって現在のディレクトリ内にファイル階層構造が再作成されます。たとえば、/home/doc/books からとったバックアップファイルを /home1 に復元する場合には、そのファイルはディレクトリ /home1/doc/books に復元されます。
個別のファイルやディレクトリを復元するときには、/var/tmp などの一時的な場所に復元するのが賢明です。ファイルやディレクトリを確認したら、それを適当な位置に移動させてもかまいません。個別のファイルやディレクトリはそれぞれ元の位置に復元できます。その場合には、新しいファイルをバックアップテープからの古いバージョンで上書きしないかどうか確かめてください。
一時的な場合でも、/tmp ディレクトリにファイルを復元してはなりません。/tmp ディレクトリは、通常、TMPFS ファイルシステムとしてマウントされていて、ACL などの UFS ファイルシステム属性をサポートしていません。
remote-host: をテープデバイス名の前に追加すると、ファイルをリモートドライブから復元することができます。次にその構文を示します。
ufsrestore rf [user@]remote-host:/dev/rmt/unit filename
たとえば、システム venus 上の /dev/rmt/0 にアクセスするには、次のように入力します。
# ufsrestore rf venus:/dev/rmt/0 filename
次のことを知っておく必要があります。
復元したいファイルはどのテープに入っているか
復元したいファイルのパス名
ファイルまたはファイルシステムを失なった日付、または復元したいファイルが前回いつごろ変更されたかをユーザーにたずねます。
自分が作成したバックアップ計画を参照して、そのファイルまたはファイルシステムが入っていた前回のバックアップの日付を調べます。
ファイルの最新バージョンを検索するには、増分バックアップファイルを最高レベル (0) から最低レベル (9) へ、最新バージョンから最古バージョンへ逆方向に調べます。
オンラインのアーカイブファイルがある場合には、ufsrestore コマンドを使って正しい媒体を指定します。
# ufsrestore ta archive-name ./path/filename ./path/filename
t |
テープ上に現れる各ファイルを表示する。 |
a |
テープではなくオンラインアーカイブファイルから内容一覧を読み取る。 |
archive-name |
オンラインアーカイブファイル名を指定する。 |
./path/filename |
オンラインアーカイブ上で検索するファイル名を指定する。コマンドが成功した場合は、ufsrestore は i ノード番号とファイル名を出力する。成功しなかった場合は、エラーメッセージを出力する。 |
バックアップが入っている媒体をドライブに挿入し、ufsrestore コマンドを使って正しい媒体であるかどうかを確認します。
# ufsrestore tf device-name ./path/filename ./path/filename
ファイル名には必ず完全パス名を使用してください。ファイルがバックアップに入っていれば、その名前と i ノード番号が表示されます。入っていなければ、そのファイルはそのボリュームに入っていないというメッセージが表示されます。
同じテープに複数のダンプファイルが入っている場合は、s /dev/rmt/n オプションを使って、自分が使用したいダンプがあるテープの位置に移動してください。
# ufsrestore xfs /dev/rmt/n tape_number
ufsdump を使って /usr スライスをダンプする場合、内容一覧には /usr の下にあるファイルとディレクトリが列挙されます。/usr/bin/pwd がオンラインアーカイブに入っているかどうかを調べるには、次のように入力します。
# ufsrestore ta archive-name ./bin/pwd
/usr/bin/pwd がバックアップテープに入っているかどうかを調べるには、次のように入力します。
# ufsrestore tf /dev/rmt/n ./bin/pwd
スーパーユーザーになります。
テープを書き込み保護の状態にします。
バックアップテープをテープドライブに挿入します。
ファイルを復元するための一時的なディレクトリに変更します。
# cd /var/tmp
ファイルを別のディレクトリに復元するには、この手順で /var/tmp を別のディレクトリ名に置き換えます。
ufsrestore コマンドを使って対話方式で復元を開始します。
情報を伝えるためのメッセージと ufsrestore> プロンプトが表示されます。
# ufsrestore if /dev/rmt/n
復元したいファイルのリストを作成します。
verbose モードをオンにして、復元するファイル名を表示します。
ufsrestore> verbose
リストが完了したら、extract コマンドを使います。
ufsrestore> extract
ufsrestore コマンドはどのボリューム番号を使用するかたずねます。
ボリューム番号を入力して、Return キーを押します。ボリュームが 1 つしかない場合には、1 を入力して Return キーを押します。
Specify next volume #: 1
リスト内のファイルとディレクトリが抽出され、現在の作業ディレクトリに復元されます。
現在の作業ディレクトリのモードを変更したくない場合は、set owner/mode プロンプトが表示されたときに n を入力します。
set owner/mode for `.'? [yn] n
ufsrestore プログラムを終了します。
ufsrestore> quit
シェルプロンプトが表示されます。
ファイルが復元されたことを確認します。
次の例では、ファイル /etc/passwd と /etc/shadow がバックアップテープから復元されています。
# cd /var/tmp # ufsrestore if /dev/rmt/0 ufsrestore> ls .: .OWdefaults bin lib sbin/ .Xauthority dev/ lost+found/ shared/ .desksetdefaults devices/ misc/ tmp/ .fm/ etc/ mnt/ ufsboot .mailtool-init export/ net/ usr/ .openwin-init home/ nfs/ var/ .profile hsfsboot opt/ ws/ .wastebasket/ kadb proc/ .xsun.pluto:0 kernel/ ufsrestore> cd etc ufsrestore> add passwd shadow ufsrestore> verbose verbose mode on ufsrestore> extract Extract requested files You have not read any volumes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 extract file ./etc/shadow extract file ./etc/passwd Add links Set directory mode, owner, and times. set owner/mode for `.'? [yn] n ufsrestore> quit #
スーパーユーザーになります。
安全のためにテープを書き込み保護します。
バックアップテープをテープドライブに挿入します。
一時的にファイルを復元するディレクトリに変更します。
# cd /var/tmp
ファイルを別のディレクトリに復元するには、この手順で /var/tmp を別のディレクトリ名に置き換えます。
ufsrestore コマンドを使ってファイルを復元します。
# ufsrestore xvf /dev/rmt/n filename ...
x |
引数 filename 内に指定されたファイルまたはディレクトリをコピーするように ufsrestore コマンドに指定する。 |
v |
復元するファイル名を表示する。 |
f /dev/rmt/n |
テープデバイス名を識別する。 |
filename ... |
空白で区切られた 1 つ以上の個別のファイルまたはディレクトリの名前。例 : ./export/home/user1/mail ./export/home/user2/mail. |
ファイルが入っているボリューム番号を入力して、Return キーを押します。
Specify next volume #: 1
ファイルは現在の作業ディレクトリに復元されます。
現在のディレクトリのモードを変更したくない場合は、set owner/mode プロンプトが表示されたときに n と入力して Return キーを押します。
set owner/mode for '.'? [yn] n
特定のファイルを復元します。
この例では、passwd と shadow ファイルが /var/tmp ディレクトリに復元されます。
# cd /var/tmp # ufsrestore xvf /dev/rmt/0 ./etc/passwd ./etc/shadowVerify volume and initialize maps Media block size is 126 Dump date: Wed Nov 06 15:21:10 1996 Dumped from: the epoch Level 0 dump of / on pluto:/dev/dsk/c0t3d0s0 Label: none Extract directories from tape Initialize symbol table. Warning: ./etc: File exists Extract requested files You have not read any volumes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 extract file ./etc/passwd Add links Set directory mode, owner, and times. set owner/mode for `.'? [yn] n # cd etc # mv passwd /etc # mv shadow /etc # ls -l etc
テープデバイス名の前に remote-host: を追加して、ファイルをリモートドライブから復元することができます。構文は次のようになります。
ufsrestore rf [user@]remote-host:/dev/rmt/n filename
たとえば、システム venus 上のリモートテープドライブ /dev/rmt/0 にアクセスするには、次のように入力します。
# ufsrestore rf venus:/dev/rmt/0 filename
この手順は、ルート (/) または /usr の復元には使用できません。これらのファイルシステムを復元する方法については、「ルート (/) と /usr を復元する方法」を参照してください。
必要があれば、ファイルシステムをマウント解除します。
# umount /dev/rdsk/device-name
newfs コマンドを使って新しいファイルシステムを作成します。
# newfs /dev/rdsk/device-name
raw デバイス上で新しいファイルシステムを構築したいかどうかをたずねるプロンプトが表示されます。デバイス名は正しく、削除しなければならないような間違ったファイルシステムがないことを確認します。
新しいファイルシステムを作成しなければならないかどうかを確認します。
newfs: construct a new file system /dev/rdsk/cwtxdysz: (y/n)? y
新しいファイルシステムが作成されます。
一時的なマウントポイントに新しいファイルシステムをマウントします。
# mount /dev/dsk/device-name /mnt
ディレクトリを /mnt に変更します。
# cd mnt
マウントポイントディレクトリに変更しました。
テープを書き込み保護します。
レベル 0 テープの第 1 ボリュームをテープドライブに挿入します。
ufsrestore コマンドを使ってテープ上のファイルを復元します。
# ufsrestore rvf /dev/rmt/n
レベル 0 ダンプが復元されます。ダンプの実行に複数のテープが必要な場合は、次のテープをロードするようにプロンプトが表示されます。
テープを外して、ドライブに次のテープをロードします。
テープの復元は必ず 0 から始め、一番高いレベルまで継続します。
ufsrestore コマンドを使ってファイルシステムを復元します。
# ufsrestore rvf /dev/rmt/n
次のレベルのテープが復元されます。ダンプの実行に複数のテープが必要な場合は、次のテープをロードするようにプロンプトが表示されます。
ファイルシステムが復元されていることを確認します。
# ls
restoresymtable ファイルを削除します。
# rm restoresymtable
ufsrestore によって作成された restoresymtable が削除されます。
別のディレクトリに変更します。
# cd /
新しく復元されたファイルシステムをマウント解除します。
# umount /mnt
最後のテープを外し、書き込み保護されていない新しいテープをテープドライブに挿入します。
ufsdump コマンドを使って、新しく復元されたファイルシステムのバックアップをとります。
# ufsdump 0uf /dev/rmt/n /dev/rdsk/device-name
ufsrestore はファイルの位置を移動し、i ノード割当てを変更するので、新しく作成されたファイルシステムのバックアップは、必ずすぐにとるようにしてください。
復元されたファイルシステムをマウントします。
# mount /dev/dsk/device-name /mount-point
復元されたファイルシステムはマウントされて、使用できるようになります。
復元され、マウントされたファイルシステムが使用できることを確認します。
# ls /mount-point
この例では、/export/home ファイルシステムが復元されます。
# umount /export/home # newfs /dev/rdsk/c0t3d0s7 newfs: construct a new file system /dev/rdsk/c0t3d0s7: (y/n)? y /dev/rdsk/c0t3d0s7: 41040 sectors in 57 cylinders of 9 tracks, 80 sectors 21.0MB in 4 cyl groups (16 c/g, 5.90MB/g, 2688 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 11632, 23232, 34832, # mount /dev/dsk/c0t3d0s7 /mnt # cd /mnt # ufsrestore rvf /dev/rmt/0 Verify volume and initialize maps Media block size is 126 Dump date: Wed Nov 06 16:21:10 1996 Dumped from: the epoch Level 0 dump of /export/home on pluto:/dev/dsk/c0t3d0s7 Label: none Begin level 0 restore Initialize symbol table. Extract directories from tape Calculate extraction list. Warning: ./lost+found: File exists Make node ./kryten Make node ./kryten/letters Make node ./kryten/memos Make node ./kryten/reports Make node ./rimmer Make node ./rimmer/sc.directives Make node ./rimmer/tests Make node ./rimmer/answers Extract new leaves. Check pointing the restore # ls # rm restoresymtable # cd / # umount /mnt # ufsdump 0ucf /dev/rmt/0 /export/home . . . # mount /dev/dsk/c0t3d0s7 /export/home # ls /export/home
新しいシステムディスクを、ルート (/) と /usr ファイルシステムが復元されるシステムに追加します。
システムディスクを追加する方法についての詳細は、第 23 章「SPARC: ディスク追加の手順」または第 24 章「x86 : ディスク追加の手順」を参照してください。
新しいファイルシステムを一時的なマウントポイントにマウントします。
# mount /dev/dsk/device-name /mnt
/mnt ディレクトリに変更します。
# cd /mnt
テープデバイスのエントリを作成します。
# tapes
テープを書き込み保護します。
ufsrestore コマンドを使ってルートファイルシステムを復元します。
# ufsrestore rvf /dev/rmt/n
レベル 0 のテープが復元されます。
テープを外し、次のレベルのテープをドライブにロードします。
テープの復元は必ず 0 から始め、最も低いレベルから最も高いレベルまで続けます。
ufsrestore コマンドは必要なだけ続けて使用します。
# ufsrestore rvf /dev/rmt/n
次のレベルのテープが復元されます。
テープを追加するたびに、手順 7 と手順 8 を繰り返します。
ファイルシステムが復元されていることを確認します。
# ls
restoresymtable ファイルを削除します。
# rm restoresymtable
ufsrestore によって作成され、復元のチェックポイントに使用された restoresymtable ファイルを削除します。
ルートディレクトリに変更します。
# cd /
新しく作成されたファイルシステムをマウント解除します。
# umount /mnt
新しいファイルシステムをチェックします。
# fsck /dev/rdsk/device-name
復元されたファイルシステムが完全であるかどうかがチェックされます。
installboot コマンドで、ルートパーティションにブートブロックを作成します。
# installboot /usr/platform/`uname-i`/lib/fs/ufs/bootblk /dev/rdsk/ devicename
SPARC システム上で installboot コマンドを使用する方法については「例 - SPARC システム上でルート (/) と /usr を復元する」を、x86 システム上で installboot コマンドを使用する方法については「例 - x86 システム上でルート (/) ファイルシステムを復元する」をそれぞれ参照してください。
新しいテープをテープドライブに挿入します。
新しいファイルシステムのバックアップをとります。
# ufsdump 0uf /dev/rmt/n /dev/rdsk/device-name
レベル 0 のバックアップが実行されます。ufsrestore はファイルの位置を移動し、i ノード割当てを変更するので、新しく作成されたファイルシステムのバックアップは、必ずすぐにとるようにしてください。
必要があれば、/usr ファイルシステムのために手順 5 から 18 までを繰り返します。
システムをリブートします。
# init 6
システムがリブートされます。
# mount /dev/dsk/c0t3d0s0 /mnt # cd /mnt # tapes # ufsrestore rvf /dev/rmt/0 # ls # rm restoresymtable # cd / # umount /mnt # fsck /dev/rdsk/c0t3d0s0 # installboot /usr/platform/`uname -i` /lib/fs/ufs/bootblk /dev/rdsk/c0t3d0s0 # ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t3d0s0 # init 6
# mount /dev/dsk/c0t3d0s0 /mnt # cd /mnt # tapes # ufsrestore rvf /dev/rmt/0 # ls # rm restoresymtable # cd / # umount /mnt # fsck /dev/rdsk/c0t3d0s0 # installboot /usr/platform/`uname -i`/lib/fs/ufs/pboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t3d0s0 # ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t3d0s0 # init 6
この章では、ufsdump コマンドと ufsrestore コマンドの参照情報を示します。
この章の内容は以下のとおりです。
ufsdump コマンドは、ファイルシステムのバックアップを作成するときに 2 つのパスを作成します。最初のパスでは、ufsdump は raw デバイスファイル内でファイルシステムを走査し、メモリー内にディレクトリとファイルのテーブルを作成します。次に、そのテーブルをバックアップ媒体に書き込みます。2 つ目のパスでは、ufsdump は i ノードに番号順にアクセスし、ファイルの内容を読み込んで媒体に書き込みます。
ufsdump コマンドに必要なことは、適切なブロックの大きさを認識することと、どのようにして媒体の終りを検出するかということです。
ufsdump は一連の固定長レコードを書き込みます。レコードの一部にしか書き込まれていないという通知を受け取ると、ufsdump は媒体の物理的な終りに達したものと想定します。この方法は、ほとんどのデバイスに有効です。部分的なレコードしか書き込まれなかったことをデバイスが ufsdump に通知できない場合は、ufsdump が書き込もうとすると媒体エラーが発生します。
DAT デバイスと 8mm テープデバイスでは、媒体の終りが検出されます。カートリッジテープデバイスと 1/2 インチテープデバイスでは、媒体の終りは検出されません。
ufsdump コマンドは、raw ディスクスライスからデータのみをコピーします。ファイルシステムがまだ有効であれば、メモリーバッファ内のデータがコピーされていない可能性があります。ufsdump によるバックアップでは、空きブロックはコピーされず、ディスクスライスのイメージも作成されません。シンボリックリンクが他のスライス上のファイルを指す場合は、リンク自体がコピーされます。
ufsdump コマンドを -u オプションといっしょに使用すると、/etc/dumpdates というファイルを管理し、更新できます。/etc/dumpdates 内の各行は、バックアップが作成されたファイルシステム、前回のバックアップレベル、バックアップ日時と曜日を示します。次の例は、ファイルサーバーからの典型的な /etc/dumpdates ファイルを示しています。
/dev/rdsk/c0t3d0s0 0 Wed Nov 6 15:32:21 1996 /dev/rdsk/c0t3d0s0 9 Wed Nov 6 16:14:51 1996 /dev/rdsk/c0t3d0s7 0 Wed Nov 6 16:18:08 1996
増分バックアップを実行するときに、ufsdump コマンドは /etc/dumpdates を検索して、下のレベルの最後のバックアップ日付を調べます。次に、下のレベルのバックアップ以降に更新されたすべてのファイルを媒体にコピーします。バックアップが完了すると、完了したばかりのバックアップを記述する新しい情報行によって、そのレベルの最後のバックアップの情報行が置き換えられます。/etc/dumpdates には、レベル 0 のバックアップを実行した日付現在で、各レベルでバックアップされたファイルシステムごとに 1 行ずつ情報が入っています。
/etc/dumpdates ファイルを使用して、バックアップが実行中であるかどうかを検査してください。機器に問題が発生している場合は、この検査が特に重要です。機器の障害が原因でバックアップを完了できないと、そのバックアップは /etc/dumpdates ファイルに記録されません。
ディスク全体を復元する必要があれば、/etc/dumpdates ファイル内で最後のバックアップの日付とレベルをチェックできるので、ファイルシステム全体を復元するために必要なファイルを判断できます。
/etc/dumpdates ファイルは編集可能なテキストファイルですが、編集するかどうかはユーザーの判断によります。ファイルに変更を加えた結果、アーカイブテープと一致しなくなると、必要なテープ (またはファイル) がどれか分からなくなることがあります。
dump-file 引数 (-f オプションに使用) では、バックアップ先を指定します。次のいずれかを指定できます。
ローカルのテープドライブかフロッピーディスクドライブ
リモートのテープドライブかフロッピーディスクドライブ
標準出力
この引数は、バックアップ先がデフォルトのローカルテープドライブ /dev/rmt/0 でないときに使用します。-f オプションを使用する場合は、dump-file の値を指定しなければなりません。
また、dump-file 引数では、ローカルディスクまたはリモートディスク上のファイルを指すこともできるので、誤用するとファイルシステムがいっぱいになる可能性があります。
通常、dump-file ではテープドライブかフロッピーディスクドライブの raw デバイスファイルを指定します。ufsdump が出力デバイスに書き込むときには、バックアップファイルを 1 つ作成しますが、このファイルは複数のテープやフロッピーディスクにまたがってもかまいません。
デバイスの省略形を使用して、システム上のテープデバイスかフロッピーディスクデバイスを指定します。第 1 のデバイスは常に 0 です。たとえば、SCSI テープコントローラが 1 つと、媒体密度のコマンドを使用する QIC-24 テープドライブが 1 つある場合は、次のデバイス名を使用します。
/dev/rmt/0m
テープデバイス名を指定するときは、名前の末尾に文字 "-n" を付けて、バックアップの完了後にテープドライブを巻き戻さないように指定することもできます。たとえば、次のように入力します。
/dev/rmt/0mn
テープに複数のファイルを格納したい場合は、"no-rewind" オプションを使用します。バックアップ中に領域を使い果たすと、ufsdump から新しいテープの挿入を促すプロンプトが表示されるまで、テープは巻き戻されません。デバイスの命名規則についての詳細は、「バックアップデバイス名」を参照してください。
構文 host:device を使用して、リモートのテープドライブかフロッピーディスクドライブを指定します。ローカルシステム上の root がリモートシステムへのアクセス権を持っていれば、ufsdump はリモートデバイスに書き込みます。通常は root として ufsdump を実行するのであれば、ルートシステム名をリモートシステムの /.rhosts ファイルに組み込まなければなりません。デバイスを user@host:device と指定すると、ufsdump は指定されたユーザーとしてリモートシステム上で実行しようとします。この場合、指定されたユーザーは、リモートシステムにアクセスできるように、リモートシステム上に .rhosts ファイルを持っていなければなりません。
デバイスには、ufsdump コマンドを実行するシステムではなく、そのデバイスが存在するシステムのオペレーティングシステムに合った命名規則を使用してください。デバイスが SunOS の旧バージョン (4.1.1 など) を実行するシステム上にある場合は、SunOS 4.1.x のデバイス名 (/dev/rst0 など) を使用します。システムが Solaris ソフトウェアを実行中であれば、SunOS 5.x の規則 (/dev/rmt/0) を使用します。
dump-file 引数を使用して、リモートデバイスを明示的に指定しなければなりません。SunOS の旧バージョンでは、rdump コマンドは出力を dumphost 別名で定義されたリモートデバイスに送っていました。ufsdump にはそれに相当する rufsdump がありません。
dump-file 引数としてダッシュ (-) を指定すると、ufsdump は標準出力に書き込みます。
dump-file 引数として標準出力を指定すると、-v オプション (検査) は機能しません。
ufsdump コマンドを使用して標準出力に書き込み、ufsrestore コマンドを使用して標準入力から読み込むと、パイプライン内でファイルシステムをコピーできます。次のようになります。
# ufsdump 0f - /dev/rdsk/c0t0d0s7 | (cd /home; ufsrestore xf -)
コマンド行の最後の引数として、必ず files-to-backup を指定しなければなりません。この引数は、バックアップのコピー元または内容を指定します。通常はファイルシステムを識別しますが、個々のファイルやディレクトリを識別することもできます。
ファイルシステムの場合は、ディスクスライスの raw デバイスファイルを指定します。これには、ファイルコントローラの省略形 (c)、SCSI デバイス専用のターゲット番号 (t)、ディスク番号 (d) とスライス番号 (s) の識別番号が含まれます。たとえば、スタンドアロンシステム (またはサーバー) 上に SCSI ディスクコントローラがあり、スライス 6 に入っている /usr のバックアップを作成したい場合は、デバイスを次のように指定します。
/dev/rdsk/c0t0d0s6
ファイルシステムは、そのエントリが /etc/vfstab ファイルに入っていれば、マウントポイントディレクトリ (/home など) を使用して指定できます。
デバイスの命名規則について詳しくは、「バックアップデバイス名」を参照してください。
個々のファイルやディレクトリごとに、1 つまたは複数の名前を空白で区切って入力します。
ufsdump を使用して (ファイルシステム全体ではなく) 1 つまたは複数のディレクトリのバックアップを作成するときには、レベル 0 のバックアップが実行されます。増分バックアップは適用されません。
ufsdump は、ほとんどのデバイスの媒体の終りを自動的に検出します。したがって、通常は -c、-d、-s、-t オプションを使用しなくても、複数のボリュームのバックアップを実行できます。
媒体の終りオプションを使用する必要があるのは、デバイスによる媒体の終りの検出方法が ufsdump で認識されないときや、restore コマンドの旧バージョンを使用してシステム上のファイルを復元しようとしているときです。restore コマンドの旧バージョンとの互換性を確保するために、サイズオプションを使用すると、従来どおり、現在のテープやフロッピーディスクの終りに達する前に、ufsdump を次のテープやフロッピーディスクに強制的に進ませることができます。
テープの性質を指定しなければ、ufsdump コマンドはデフォルト設定を使用します。表 36-1 は、各種テープカートリッジに使用できる ufsdump コマンドの引数を示しています。テープカートリッジ (-c)、密度 (-d)、サイズ (-s)、トラック数 (-t) を指定できます。引数がオプションの順序と合っていれば、オプションはいくつでも指定できます。
表 36-1 テープ容量を指定する ufsdump の引数
テープ |
引数 |
---|---|
フロッピーディスク |
ufsdump Ds 1422 |
60M バイトのカートリッジ |
ufsdump cdst 1000 425 9 |
150M バイトのカートリッジ |
ufsdump cdst 1000 700 18 |
1/2 インチのテープ |
ufsdump dsb 1600 2300 126 |
2.3G バイトの 8mm テープ |
ufsdump dsb 54000 6000 126 |
5.0G バイトの 8mm テープ |
ufsdump dsb 54000 13000 126 |
5.0G バイトの 4mm テープ |
ufsdump b 96 |
表 36-2 は、ufsdump コマンドでは実行できない作業を示しています。
表 36-2 ufsdump で実行できない作業
実行できない作業 |
備考 |
---|---|
ファイルシステムのバックアップに必要なテープやフロッピーディスクの数を自動的に計算する。 |
仮実行 (ドライラン) モード (S オプション) を使用すると、実際にファイルシステムをバックアップする前に必要な容量を判断できる。 |
アクティブなファイルシステムをバックアップするときの問題を最小限度に抑えるために、組み込みエラーチェック機能を提供する。 |
- |
サーバーからリモートにマウントされたファイルをバックアップ可能にする。 |
サーバー上のファイルのバックアップは、そのサーバー上で実行しなければならない。ユーザーがサーバー上で所有するファイル上で ufsdump を実行するアクセス権は拒否される。 |
この節では、ufsdump コマンドのオプションと引数について詳しく説明します。ufsdump コマンドの構文は次のとおりです。
/usr/sbin/ufsdump [options] [arguments] files-to-back-up
options |
1 文字のオプション名からなる 1 つの文字列 |
arguments |
オプションの引数を指定する。複数の文字列も可。オプション文字と引数とは同じ順序で並べなければならない。 |
files-to-back-up |
バックアップするファイルを指定する。これらの引数は常に最後に指定する。 |
オプションを指定せずに ufsdump コマンドを実行する場合は、次の構文を使用します。
# ufsdump files-to-back-up
ufsdump では、デフォルトで次のオプションが使用されます。
ufsdump 9uf /dev/rmt/0 files-to-back-up
これらのオプションでは、デフォルトのテープドライブ上にその推奨密度でレベル 9 の増分バックアップが作成されます。
表 36-3 は、ufsdump コマンドのオプションを示しています。
表 36-3 ufsdump コマンドのオプション
オプション |
説明 |
---|---|
0-9 |
バックアップレベル。レベル 0 は files-to-backup で指定したファイルシステム全体の完全バックアップ用。レベル 1 〜 9 は、最後の下位バックアップ以降に変更があったファイルの増分バックアップ用。 |
a archive-file |
アーカイブファイル。指定したディスク上のファイルにバックアップ用の内容一覧を格納 (アーカイブ) する。このファイルは、ufsrestore でしか認識できず、復元すべきファイルがバックアップファイル内にあるかどうかと、もしあればどの媒体ボリュームに入っているかを判断するために使用される。 |
b factor |
ブロック係数。1 処理ごとにテープに書き込まれる 512 バイトのブロック数。 |
c |
カートリッジ。カートリッジテープにバックアップを作成する。媒体の終りの検出を適用するときは、このオプションでブロックサイズを 126 に設定する。 |
d bpi |
テープ密度。このオプションは、ufsdump で媒体の終りを検出できないときにのみ使用する必要がある。 |
D |
フロッピーディスク。フロッピーディスクにバックアップを作成する。 |
f dump-file |
ダンプファイル。ファイルをデフォルトデバイスではなく dump-file で指定したコピー先に書き込む。ファイルを user@system:device として指定すると、ufsdump は指定されたユーザーとしてリモートシステム上で実行しようとする。指定されたユーザーは、このコマンドをローカルシステム上で呼び出してリモートシステムにアクセスできるように、リモートシステム上に .rhosts ファイルを持っていなければならない。 |
l |
自動ロード。このオプションは、オートロード (スタックローダ) テープドライブがある場合に使用する。テープの終りに達すると、このオプションはドライブをオフラインにして、テープドライブの準備ができるまで 2 分間待つ。2 分以内にドライブの準備ができると、続行する。2 分経過しても準備ができなければ、オペレータに別のテープをロードするように促すプロンプトを表示する。 |
n |
通知。介入が必要になると、sys グループのユーザー全員の端末にメッセージを送る。 |
o |
オフライン。テープやフロッピーディスクの処理が終わると、ドライブをオフラインにして巻き戻し (テープの場合)、可能であれば媒体をはずす (たとえば、フロッピーディスクを取り出したり、8mm の自動ロードテープをはずす)。 |
s size |
サイズ。テープの場合はフィート数、フロッピーディスクの場合は 1024 バイトのブロック数を指定する。このオプションは、ufsdump で媒体の終りを検出できないときにのみ使用する必要がある。 |
S |
バックアップの予想サイズ。バックアップを実際に実行せずに必要な容量を判断し、バックアップの予想バイト数を示す数値を 1 つ出力する。 |
t tracks |
トラック数。1/4 インチカートリッジテープのトラック数を指定する。このオプションを使用する必要があるのは、ufsdump で媒体の終りを検出できないときだけである。 |
u |
ダンプレコードのアップデート。ファイルシステムの完全バックアップをとる場合には、ファイル /etc/dumpdates ファイルにエントリを追加する。このエントリは、ファイルシステムのディスクスライスのデバイス名、バックアップレベル (0 〜 9)、日付を示す。u オプションを使用しないときや、個々のファイルかディレクトリのバックアップを作成するときは、レコードは書き込まれない。バックアップのレコードがすでに同じレベルに存在する場合は、それが置き換えられる。 |
v |
検査。各テープまたはフロッピーディスクが書き込まれた後に、ソースファイルシステムと対照して媒体の内容を検査する。矛盾が発生すると、オペレータに新しい媒体のマウントを促すプロンプトを表示してプロセスを繰り返す。ファイルシステム内で動作が発生すると矛盾が報告されるので、このオプションはマウント解除されたファイルシステム専用である。 |
w |
警告。/etc/dumpdates ファイルに表示されるファイルシステムのうち、特定の日にバックアップされていないファイルシステムを表示する。このオプションを使用すると、他のすべてのオプションは無視される。 |
W |
強調表示付きの警告。/etc/dumpdates 内のすべてのファイルシステムを表示し、特定の日にバックアップされていないファイルシステムを強調表示する。このオプションを使用すると、他のすべてのオプションは無視される。 |
/etc/vfstab ファイルには、ファイルシステムのバックアップ頻度に関する情報は入っていません。
セキュリティに関する注意事項は次のとおりです。
ufsdump コマンドへの root アクセス権が必要である。
集中バックアップを実行する場合は、クライアント上とサーバー上の /.rhost ファイルから root アクセスエントリを削除しておかなければならない。
セキュリティについての詳細は、パート XIIIを参照してください。
ufsrestore の構文は次のとおりです。
ufsrestore [options][arguments][filename ...]
options |
1 文字のオプション名からなる 1 つの文字列。i、r、R、t、x から 1 つだけ選択する。 |
arguments |
オプションに対応する引数。オプションと同じ順序で並んでいなければならない。 |
filename |
x または t オプションの引数として、復元するファイルを指定する。常に最後に指定する。 |
表 36-4 の ufsrestore オプションを 1 つだけ使用しなければなりません。
表 36-4 ufsrestore コマンドに必要なオプション
オプション |
説明 |
---|---|
i |
対話式。ufsrestore を対話モードで実行する。このモードでは、限られたシェルコマンドセットを実行して媒体の内容を表示し、復元するファイルやディレクトリを個別に選択できる。利用できるコマンドのリストについては、「対話式復元コマンド」を参照。 |
r |
再帰。媒体の内容全体を現在の作業ディレクトリ (ファイルシステムの最上位レベル) に復元する。完全ダンプ (例、restoresymtable) の最上部に増分ダンプを復元するための情報も含まれる。ファイルシステムを完全に復元するには、このオプションを使用して完全 (レベル 0) ダンプを復元してから、各増分ダンプを復元する。これは新しいファイルシステム (newfs コマンドで作成したばかりのファイルシステム) 用だが、ファイルシステムにはファイルが入っていることがあり、バックアップ媒体にないファイルが保存される。 |
R |
復元の再開。復元を再開するボリュームをたずねるプロンプトを表示し、チェックポイントから再開する。完全復元 (r オプション) が中断された後は、このオプションを指定して ufsrestore コマンドを実行し直す。 |
x [filename...]
|
抽出。filename 引数で指定したファイルを選択的に復元する。filename では、ファイルとディレクトリのリストを指定できる。h オプションも指定しなければ、指定したディレクトリの下のファイルがすべて復元される。filename を省略するか、ルートディレクトリを表す「.」を入力すると、媒体のすべてのボリューム上 (または標準入力から) のすべてのファイルが復元される。既存のファイルは上書きされ、警告が表示される。 |
t [filename...] |
内容一覧。filename 引数で指定したファイルが媒体と対照してチェックされる。ファイルごとに、完全ファイル名と i ノード番号 (ファイルが見つかった場合) が表示されるか、ファイルが「ボリューム」上にないことを示す (複数のボリュームダンプのボリュームを意味する)。filename 引数を入力しなければ、媒体のすべてのボリューム上のファイルが表示される (どのボリュームにファイルが入っているかは区別されない)。h オプションも指定すると、内容ではなく filename で指定したディレクトリファイルのみがチェックされ表示される。内容一覧は、媒体の最初のボリュームから読み込まれるか、a オプションを使用すると指定したアーカイブファイルから読み込まれる。このオプションは x、r オプションといっしょに使用できない。 |
表 36-4 からオプションを 1 つ選択する他に、表 36-5 からもオプションを選択できます。
表 36-5 ufsrestore コマンドの追加オプション
オプション |
説明 |
---|---|
a archive-file [filename...] |
ダンプの内容一覧は、媒体 (最初のボリューム) ではなく、指定した archive-file からダンプの内容一覧が取り出される。このオプションを t、i、または x オプションと組み合わせて使用すると、媒体をマウントしなくてもダンプ内のファイルをチェックできる。x コマンドと対話型抽出オプションといっしょに使用すると、ファイルを抽出する前に適切なボリュームのマウントを促すプロンプトが表示される。 |
b factor |
ブロック係数。1 処理ごとにテープに書き込む 512 バイトのブロック数。デフォルトでは、ufsrestore はテープの書き込みに使用したブロック数を表示しようとする。 |
d |
デバッグ。デバッグメッセージ機能をオンにする。 |
f backup-file |
バックアップファイル。ファイルは、デフォルトのデバイスファイル /dev/rmt/0m ではなく backup-file で指定したソースから読み込まれる。f オプションを使用する場合は、backup-file の値を指定しなければならない。backup-file が system:device 形式であれば、ufsrestore はリモートデバイスから読み込む。backup-file 引数を使用すると、ローカルディスクやリモートディスク上のファイルも指定できる。backup-file が "-" であれば、ファイルは標準入力から読み込まれる。 |
h |
ディレクトリの展開をオフにする。指定したディレクトリファイルのみが抽出または表示される。 |
m |
指定したファイルが、バックアップ階層内の位置に関係なくディスク上の現在のディレクトリに復元され、i ノード番号を使用して名前が変更される。たとえば、現在の作業ディレクトリが /files であれば、i ノード番号が 42 のバックアップ ./dready/fcs/test 内のファイルは、/files/42 として復元される。このオプションが便利なのは、少数のファイルを抽出するときだけである。 |
s n |
媒体上の n 番目のバックアップファイルをスキップする。このオプションは、1 本のテープに複数のバックアップを入れるときに便利である。 |
v |
詳細。各ファイルが復元されるたびに、その名前と i ノード番号が表示される。 |
y |
媒体の読み込みエラーが発生しても処理を続行し、停止する代わりに不良ブロックをスキップしようとして、処理を中止するかどうかをたずねるプロンプトを表示する。このオプションは、コマンドに対して yes という応答を想定するように指示する。 |
オプション |
説明 |
---|---|
ls [directory-name] |
現在のディレクトリまたは指定したディレクトリの内容が表示される。ディレクトリは接尾辞 / 付きで表示され、現在のリスト内で復元 (抽出) されるエントリは接頭辞 * 付きで表示される。詳細オプションを使用すると、i ノード番号が表示される。 |
cd directory-name |
バックアップ階層内の指定したディレクトリに切り替える。 |
add [filename] |
現在のディレクトリまたは指定したファイルやディレクトリを、抽出 (復元) するファイルのリストに追加する。h オプションを使用しなければ、指定したディレクトリとそのサブディレクトリ内のすべてのファイルがリストに追加される。ディレクトリに復元したいファイルがすべて 1 つのバックアップテープやフロッピーディスクに入っていないことがあるので注意する必要がある。すべてのファイルを抽出するには、さまざまなレベルの複数のバックアップから復元しなければならないことがある。 |
delete [filename] |
現在のディレクトリまたは指定したファイルやディレクトリを、抽出 (復元) するファイルのリストから削除する。h オプションを使用しなければ、指定したディレクトリとそのサブディレクトリ内のすべてのファイルが削除される。ファイルとディレクトリは、構築中の抽出リストからのみ削除されるので注意する必要がある。媒体からは削除されない。 |
extract |
リスト内のファイルを抽出し、ディスク上の現在の作業ディレクトリに復元する。ボリューム番号をたずねるプロンプトが表示されたら 1 を指定する。複数テープや複数フロッピーディスクによる復元を実行して少数のファイルを復元する場合は、最後のテープまたはフロッピーディスクから始める。 |
help |
対話モードで使用できるコマンドのリストが表示される。 |
pwd |
バックアップ階層内の現在の作業ディレクトリのパス名が表示される。 |
q |
それ以上ファイルを復元しないで対話モードを終了する。 |
setmodes |
バックアップ元となったファイルシステムのルートディレクトリのモードに合わせて、復元するファイルのモードを設定できる。set owner/mode for '.' [yn]? というプロンプトが表示される。y (yes の意味) を入力すると、バックアップ元となったファイルシステムのルートディレクトリに合わせて、現在のディレクトリのモード (アクセス権、所有者、時刻) を設定できる。このモードは、ファイルシステム全体を復元するときに使用する。n (no の意味) を入力すると、現在のディレクトリのモードは変更されずにそのまま残る。このモードは、バックアップの一部をファイルのバックアップ元とは異なるディレクトリに復元するときに使用する。 |
verbose |
詳細オプションのオンとオフを切り替える (対話型モードの外側では、コマンド行から v と入力することもできる)。詳細モードがオンになっていると、対話型の ls コマンドでは i ノード番号が表示され、ufsrestore コマンドでは各ファイルが抽出されるたびにファイル情報が表示される。 |
what |
テープやフロッピーディスク上のバックアップヘッダが表示される。 |
この章では、各種のバックアップコマンドを使用して、UFS ファイルとファイルシステムをディスク、テープ、フロッピーディスクにコピーする方法について説明します。
この章で説明する手順は次のとおりです。
ファイルシステム全体をバックアップして復元したいときは、第 36 章「ufsdump コマンドと ufsrestore コマンドの参照情報」で説明した ufsdump コマンドと ufsrestore コマンドを使用します。個々のファイル、ファイルシステムの一部、またはファイルシステム全体をコピーまたは移動したいときは、ufsdump と ufsrestore の代わりに、この章で説明する手順を使用できます。
表 37-1 は、各種バックアップコマンドの用途を示しています。
表 37-1 バックアップコマンドの用途
目的 |
使用するコマンド |
参照ページ |
---|---|---|
ファイルシステムをテープにバックアップする |
ufsdump | |
ファイルシステムをテープから復元する |
ufsrestore | |
ファイルを他のシステムに転送する |
pax, tar, または cpio | |
ファイルまたはファイルシステムをディスクにコピーする |
dd | |
ファイルをフロッピーディスクにコピーする |
tar |
一時的な場合でも、/tmp ディレクトリにファイルを復元してはなりません。/tmp ディレクトリは、通常、TMPFS ファイルシステムとしてマウントされていて、ACL などの UFS ファイルシステム属性をサポートしていません。
表 37-2 は、各種のバックアップコマンドと復元コマンドを示しています。
表 37-2 バックアップコマンドの概要
コマンド名 |
ファイルシステム境界の認識 |
複数ボリュームバックアップのサポート |
物理コピーか論理コピーか |
---|---|---|---|
volcopy |
する |
する |
物理 |
tar |
しない |
しない |
論理 |
cpio |
する |
する |
論理 |
pax |
する |
する |
論理 |
dd |
しない |
する |
物理 |
ufsdump/ufsrestore |
する |
する |
論理 |
次の節では、各方法の長所と短所を説明し、コマンドの使用例を示します。
ファイルシステムをディスクにコピーするには、次の 2 つのコマンドを使用します。
volcopy
dd
次の節では、dd コマンドを使用してファイルシステムをディスクにコピーする方法について説明します。
dd コマンドでは、UFS ファイルシステムのリテラル (ブロック) コピーを別のファイルシステムやテープに作成します。デフォルトでは、dd コマンドはその標準入力を標準出力にコピーします。
可変長テープドライブには dd コマンドを使用しないでください。
標準入力、標準出力、またはその両方の代わりに、デバイス名を指定できます。次の例では、フロッピーディスクの内容が /tmp ディレクトリ内のファイルにコピーされます。
$ dd < /floppy/floppy0 > /tmp/output.file 2400+0 records in 2400+0 records out
dd コマンドは、読み込みブロック数と書き込みブロック数をレポートします。+ の次の数値は、部分的にコピーされたブロックの数です。
dd コマンドの構文は、他のほとんどのコマンドとは異なっています。オプションは keyword=value のペアで指定します。この場合、keyword は設定したいオプションで、value はそのオプションの引数です。たとえば、標準入力と標準出力を次の構文に置き換えることができます。
$ dd if=input-file of=output-file
たとえば、上記の例のリダイレクト記号の代わりに keyword=value のペアを使用するには、次のように入力します。
$ dd if=/floppy/floppy0 of=/tmp/output.file
コピー元とコピー先のディスクが同じディスクジオメトリを持っているかどうかを確認します。
スーパーユーザーになります。
リブートした後でクローンディスクが認識されるように、マスターディスクが入っているシステム上で /reconfigure ファイルを作成します。
システムをシャットダウンします。
# init 0
クローンディスクをシステムに接続します。
システムをブートします。
ok boot
dd コマンドを使用してマスターディスクをクローンディスクにコピーします。
# dd if=/dev/dsk/device-name of=/dev/dsk/device-name bs=blocksize
if=/dev/dsk/device-name |
入力デバイスとしてマスターディスクデバイスを指定する。 |
of=/dev/dsk/device-name |
出力デバイスとしてクローンディスクデバイスを指定する。 |
bs=blocksize |
ブロックサイズ |
新しいファイルシステムをチェックします。
# fsck /dev/rdsk/device-name
クローンディスクのルート (/) ファイルシステムをマウントします。
# mount /dev/dsk/device-name /mnt
クローンディスクの /etc/vfstab を編集して、正しいデバイス名を参照します。
クローンディスクのルート (/) ファイルシステムをマウント解除します。
# umount /mnt
システムを停止します。
# init 0
クローンディスクからシングルユーザーモードにブートします。
# boot diskn -s
クローンディスクの構成を解除します。
# sys-unconfig
構成を解除すると、システムが停止します。
再びクローンディスクからブートし、ホスト名や時間帯などのシステム情報を与えます。
# boot diskn
スーパーユーザーとしてログインして、一度システムがブートした後のシステム情報を確認します。
hostname console login:
# init 0 ok boot # dd if=/dev/dsk/c0t0d0s2 of=/dev/dsk/c0t2d0s2 bs=100k # fsck /dev/rdsk/c0t2d0s2 # mount /dev/dsk/c0t2d0s2 /mnt # cd /mnt/etc # vi vfstab (Modify entries for the new disk) # cd / # umount /mnt # init 0 # boot disk2 -s # sys-unconfig # boot disk2
cpio (コピーインとコピーアウト) コマンドを使用して、個々のファイル、ファイルグループ、またはファイルシステム全体をコピーできます。この節では、cpio コマンドを使用してファイルシステム全体をコピーする方法について説明します。
cpio コマンドは、ファイルのリストを取り出して 1 つの大型出力ファイルにコピーするアーカイブプログラムです。また、復元しやすいように、個々のファイルの間にヘッダを挿入します。cpio コマンドを使用すると、ファイルシステム全体を別のスライス、別のシステム、またはテープやフロッピーディスクなどの媒体デバイスにコピーできます。
cpio コマンドは媒体の終りを認識し、別のボリュームの挿入を促すプロンプトを表示するので、複数のテープやフロッピーディスクが必要なアーカイブを作成するには最も (ufsdump よりも) 効率のよいコマンドです。
cpio の使用時には、しばしば ls や find などのコマンドを使用し、コピーしたいファイルを選択して、出力を cpio コマンドにパイプします。
スーパーユーザーになります。
目的のディレクトリに変更します。
# cd /filesystem1
find コマンドと cpio コマンドを組み合わせてディレクトリツリーをコピーします。
# find . -print -depth | cpio -pdmu /filesystem2
. |
現在の作業ディレクトリ内で処理を始める。 |
|
ファイル名を出力する。 |
-depth |
ディレクトリ階層を下位へたどってバックアップ中にファイル名を出力する。 |
-p |
ファイルのリストを作成する。 |
-d |
必要に応じてディレクトリを作成する。 |
-m |
ディレクトリ上で正しい変更時刻を設定する。 |
指定したディレクトリ名からファイルがコピーされ、シンボリックリンクは保持されます。
また、-u オプションも指定できます。このオプションは、無条件コピーを実施します。-u オプションを指定しないと、古いファイルは、新しいファイルで置換されません。これは、ディレクトリを確実にコピーしたいとき、コピーするファイルの一部がすでにターゲットのディレクトリ中に存在する場合に便利です。
該当する場合は、ソースディレクトリを削除します。
# rm -rf /filesystem1
コピー先ディレクトリの内容を表示して、コピーに成功したかどうかを確認します。
# cd filesystem2 # ls
# cd /data1 # find . -print -depth | cpio -pdm /data2 19013 blocks # cd /data2 # ls # rm -rf /data1 # cd filesystem2 # ls
詳細は、cpio(1) のマニュアルページを参照してください。
pax、tar、cpio コマンドを使用すると、ファイルとファイルシステムをテープにコピーできます。どのコマンドを選択するかは、コピーする目的に応じて異なります。3 つのコマンドはすべて raw デバイスを使用するので、使用する前にテープ上でファイルシステムをフォーマットまたは作成する必要はありません。
表 37-3 cpio、pax、および tar コマンドの長所と短所
使用するテープドライブとデバイス名は、各システムのハードウェアと構成によって異なります。テープドライブとデバイス名の詳細については、「どの媒体を使用するかの選択」を参照してください。
tar コマンドでファイルをテープにコピーする前に、次のことを知っておかなければなりません。
ファイル名の一部にファイル名置換ワイルドカード文字 (? と *) を使用して指定できる。たとえば、接尾辞 .doc が付いたすべての文書をコピーするには、ファイル名引数として *.doc と入力する。
tar アーカイブからファイルを抽出するとき、ファイル名置換ワイルドカードは使用できない。
コピーしたいファイルが入っているディレクトリに変更します。
書き込み可能なテープをテープドライブに挿入します。
$ tar cvf /dev/rmt/n filename ...
c |
アーカイブが作成されるように指定する。 |
v |
アーカイブされるたびに、各ファイルの名前が表示される。 |
f /dev/rmt/n |
アーカイブを指定したデバイスまたはファイルに書き込むように指定する。 |
filename ... |
コピーしたいファイルを指定する。 |
指定した名前のファイルがテープにコピーされ、テープ上の既存のファイルが上書きされます。
テープをドライブから取り出して、テープラベルにファイル名を記入します。
テープの内容を表示する t オプションを指定し、tar コマンドを使用して、コピーされたファイルがテープに入っているかどうかを確認します。tar テープ上のファイルを表示する方法についての詳細は、「テープ上のファイルのリストを表示する方法 (tar)」を参照してください。
$ tar tvf /dev/rmt/n
次の例では、3 つのファイルがテープドライブ 0 のテープにコピーされます。
$ cd /export/home/kryten $ ls reports reportA reportB reportC $ tar cvf /dev/rmt/0 reports a reports/ 0 tape blocks a reports/reportA 2 tape blocks a reports/reportB 5 tape blocks a reports/reportC 6 tape blocks $ tar tvf /dev/rmt/n
テープをテープドライブに挿入します。
$ tar tvf /dev/rmt/n
t |
テープ上のファイルの内容一覧が表示される。 |
v |
t オプションといっしょに使用すると、テープ上のファイルに関する詳細情報が表示される。 |
f /dev/rmt/n |
テープデバイスを示す。 |
次の例では、ドライブ 0 内のテープの目次に 3 つのファイルが入っています。
$ tar tvf /dev/rmt/0 drwxr-xr-x 101/10 0 Nov 6 16:31 1996 reports/ -rw-r--r-- 101/10 0 Nov 6 16:31 1996 reports/reportA -rw-r--r-- 101/10 0 Nov 6 16:31 1996 reports/reportB -rw-r--r-- 101/10 0 Nov 6 16:31 1996 reports/reportC
ファイルを入れたいディレクトリに変更します。
テープをテープドライブに挿入します。
tar コマンドを使用してテープからファイルを取り出します。
$ tar xvf /dev/rmt/n filename filename
x |
指定したアーカイブファイルからファイルを抽出するように指定する。指定したドライブ内のテープ上にあるすべてのファイルが現在のディレクトリにコピーされる。 |
v |
各ファイルがアーカイブされるたびに、その名前が表示される。 |
f /dev/rmt/n |
アーカイブが入っているテープデバイスを示す。 |
現在のディレクトリの内容をリストして、ファイルがコピーされていることを確認します。
$ ls -l
次の例では、ドライブ 0 のテープからすべてのファイルがコピーされます。
$ cd /var/tmp $ tar xvf /dev/rmt/0 x reports/, 0 bytes, 0 tape blocks x reports/reportA, 0 bytes, 0 tape blocks x reports/reportB, 0 bytes, 0 tape blocks x reports/reportC, 0 bytes, 0 tape blocks x reports/reportD, 0 bytes, 0 tape blocks ls -l
テープから抽出されるファイル名は、アーカイブに格納されるファイル名と同一でなければなりません。ファイルの名前やパス名が不明な場合は、まずテープ上のファイルのリストを表示します。手順については、「テープ上のファイルのリストを表示する方法 (tar)」を参照してください。
詳細は、tar(1) のマニュアルページを参照してください。
この節では、pax コマンドでファイルをコピーする方法について説明します。
コピーしたいファイルが入っているディレクトリに変更します。
書き込み可能なテープをテープドライブに挿入します。
pax コマンドを使用してファイルをテープにコピーします。
$ pax -w -f /dev/rmt/0 .
-w |
現在のディレクトリの内容をテープにコピーする。 |
-f /dev/rmt/0 |
テープドライブを識別する。 |
pax -l コマンドで、ファイルがテープにコピーされていることを確認します。
$ pax -l -f /dev/rmt/0
ドライブからテープを取り出して、テープラベルにファイル名を記入します。
$ pax -w -f /dev/rmt/0 . $ pax -l -f /dev/rmt/0 filea fileb filec
詳細については、pax(1) を参照してください。
書き込み保護されていないテープをテープドライブに挿入します。
ls コマンドと cpio コマンドを使用してファイルをテープにコピーします。
$ ls | cpio -oc > /dev/rmt/n
ls |
cpio コマンドにファイル名のリストを与える。 |
cpio -oc |
cpio がコピーアウトモード (-o) で動作し、ASCII 文字形式 (-c) でヘッダー情報を書き込むように指定する。これにより他のベンダーのシステムと可搬性を保つ。 |
> /dev/rmt/n |
出力ファイルを指定する。 |
ディレクトリ内のすべてのファイルは、指定したドライブ内のテープにコピーされ、テープ上の既存のファイルが上書きされます。コピーされた合計ブロック数が表示されます。
次の cpio コマンドで、ファイルがテープにコピーされていることを確認します。
$ cpio -civt < /dev/rmt/n
テープをドライブから取り出して、テープラベルにファイル名を記入します。
次の例では、ディレクトリ /export/home/kryten 内のすべてのファイルが、テープドライブ 0 のテープにコピーされます。
$ cd /export/home/kryten $ ls | cpio -oc > /dev/rmt/0 8 blocks $ cpio -civt < /tmp/cpio.file drwxr-xr-x 2 kryten users 0 Oct 24 11:05 1996, letters drwxr-xr-x 2 kryten users 0 Oct 24 11:05 1996, memos drwxr-xr-x 2 kryten users 0 Nov 8 14:14 1996, reports 8 blocks $
内容一覧を表示すると、cpio コマンドはアーカイブ全体を処理しなければならないので、アーカイブファイルの読み込みに長時間かかります。
テープをテープドライブに挿入します。
cpio コマンドを使用してテープ上のファイルのリストを表示します。
$ cpio -civt < /dev/rmt/n
-c |
ファイルを ASCII 文字形式で読み込むように指定する。 |
-i |
cpio がコピーインモードで動作することを指定する (この時点ではファイルをリストするだけ)。 |
-v |
ls -l コマンドと同様の形式で出力が表示される。 |
-t |
指定したテープドライブ内のテープ上にあるファイルの内容一覧が表示される。 |
< /dev/rmt/n |
既存の cpio アーカイブの入力ファイルを指定する。 |
次の例では、ドライブ 0 のテープの目次に 3 つのファイルが入っています。
$ cpio -civt < /dev/rmt/0 drwxr-xr-x 2 rimmer users 0 Oct 28 09:17 1996, answers drwxr-xr-x 2 rimmer users 0 Oct 28 09:17 1996, sc.directives drwxr-xr-x 2 rimmer users 0 Oct 28 09:17 1996, tests 8 blocks
相対パス名を使用してアーカイブを作成した場合、入力ファイルはそれを取り出すときに現在のディレクトリ内のディレクトリとして作成されます。ただし、絶対パス名を指定してアーカイブを作成した場合は、それと同じ絶対パス名を使用してシステム上でファイルが再び作成されます。
絶対パス名を使用すると、自分のシステム上にある元のファイルを上書きすることになるので危険です。
ファイルを入れたいディレクトリに変更します。
テープをテープドライブに挿入します。
cpio コマンドを使用して、すべてのファイルをテープから現在のディレクトリにコピーします。
$ cpio -icvd < /dev/rmt/n
-i |
テープの内容を読み込む。 |
-c |
ファイルを ASCII 文字形式で読み込むように指定する。 |
-v |
ls -l コマンドと同様の形式で出力が表示される。 |
-d |
必要に応じて、ディレクトリを作成する。 |
< /dev/rmt/n |
入力ファイルを指定する。 |
現在のディレクトリの内容をリストして、ファイルがコピーされていることを確認します。
$ ls -l
次の例では、ドライブ 0 のテープからすべてのファイルがコピーされます。
$ cd /var/tmp cpio -icvd < /dev/rmt/0 answers sc.directives tests 8 blocks $ ls -l
ファイルを入れたいディレクトリに変更します。
テープをテープドライブに挿入します。
cpio コマンドを使用してテープからファイルのサブセットを取り出します。
$ cpio -icv "*file" < /dev/rmt/n
-i |
テープの内容を読み込む。 |
-c |
ファイルを ASCII 文字形式で読み込むように指定する。 |
-v |
ls -l コマンドと同様の形式で出力が表示される。 |
"*file" |
パターンに一致するすべてのファイルを現在のディレクトリにコピーするように指定する。複数のパターンを指定できるが、個々のパターンを二重引用符で囲まなければならない。 |
< /dev/rmt/n |
入力ファイルを指定する。 |
現在のディレクトリの内容をリストして、ファイルがコピーされていることを確認します。
$ ls -l
次の例では、末尾に接尾辞 chapter が付いているすべてのファイルがドライブ 0 のテープからコピーされます。
$ cd /home/smith/Book $ cpio -icv "*chapter" < /dev/rmt/0 Boot.chapter Directory.chapter Install.chapter Intro.chapter 31 blocks $ ls -l
詳細は、cpio(1) のマニュアルページを参照してください。
リモートテープドライブを使用するには、次の前提条件を満たさなければなりません。
ローカルホスト名 (および、オプションで、コピーしているユーザーのユーザー名) が、リモートシステムの /etc/hosts.equiv ファイル内になければならない。あるいは、コピーしているユーザーは、リモートマシン上の自分のホームディレクトリをアクセス可能にしておかなければならない。さらに、$HOME/.rhosts 内にローカルマシン名がなければならない。詳細については、hosts.equiv(4) を参照。
リモートシステムのエントリがローカルシステムの /etc/inet/hosts ファイル内またはネームサービスの hosts ファイル内になければならない。
リモートコマンドを実行するための適切なアクセス権を持っているかどうかをテストするには、次を試してみます。
$ rsh remotehost echo test
「test」がエコーされた場合、リモートコマンドを実行するためのアクセス権を持っています。「Permission denied」がエコーされた場合、上記の手順 1 で説明したように、ユーザーの設定をチェックしてください。
tar コマンドと dd コマンドを使用して、ファイルをリモートテープドライブにコピーします。
$ tar cf - files | rsh remotehost dd of=/dev/rmt/n obs=blocksize
tar cf |
tar オプションでテープアーカイブを作成し、テープデバイスを指定する。 |
- (ハイフン) |
可変部としてテープデバイスの代わりに指定する。 |
files |
コピーするファイル |
| rsh remotehost |
tar コマンドがリモートシェルにパイプされ、ファイルがコピーされる。 |
dd of=/dev/rmt/n |
出力デバイスを指定する。 |
obs=blocksize |
ブロック係数を指定する。 |
テープをドライブから取り出して、テープラベルにファイル名を記入します。
# tar cvf - * | rsh mercury dd of=/dev/rmt/0 bs=126b a answers/ 0 tape blocks a answers/test129 1 tape blocks a sc.directives/ 0 tape blocks a sc.directives/sc.190089 1 tape blocks a tests/ 0 tape blocks a tests/test131 1 tape blocks 0+2 records in 0+2 records out
一時ディレクトリに変更します。
$ cd /var/tmp
tar コマンドと dd コマンドを使用して、ファイルをリモートテープドライブに抽出します。
$ rsh remotehost dd if=/dev/rmt/n | tar xvBpf -
rsh remotehost |
dd コマンドを使用してテープデバイスからファイルを取り出すために起動されるリモートシェル。 |
dd if=/dev/rmt/n |
入力デバイスを指定する。 |
| tar xvBpf - |
dd コマンドの出力は tar コマンドにパイプされ、復元されたファイルに使用される。 |
ファイルが抽出されたかどうかを確認します。
$ ls -l /var/tmp
$ rsh mercury dd if=/dev/rmt/0 | tar xvBpf - x answers/, 0 bytes, 0 tape blocks x answers/test129, 48 bytes, 1 tape blocks 20+0 records in 20+0 records out x sc.directives/, 0 bytes, 0 tape blocks x sc.directives/sc.190089, 77 bytes, 1 tape blocks x tests/, 0 bytes, 0 tape blocks x tests/test131, 84 bytes, 1 tape blocks $ ls -l /var/tmp
ファイルやファイルシステムをフロッピーディスクにコピーする前に、フロッピーディスクをフォーマットしなければなりません。フロッピーディスクをフォーマットする方法については、第 13 章「コマンド行でのフロッピーディスクのフォーマットと使用方法」を参照してください。
tar コマンドを使用して、UFS ファイルを 1 枚のフォーマット済みフロッピーディスクにコピーします。
UFS ファイルを複数のフォーマット済みフロッピーディスクにコピーする必要があれば、cpio コマンドを使用します。cpio は媒体の終りを認識し、次のボリュームの挿入を促すプロンプトを表示します。
ボリューム管理の関係で、cpio コマンドを使用して ufs ファイルを複数のフォーマット済みフロッピーディスクにコピーする手順は単純ではありません。Solaris 2.5 リリースでは、この手順が更新される予定です。
両面高密度 3.5 インチフロッピーディスクを使用してください (フロッピーディスクには「DS、HD」マークが付いています)。
フロッピーディスクにマウント済みファイルシステムが入っている場合は、tar を実行する前にマウント解除しなければならない。umount コマンドを使用してファイルシステムをマウント解除する方法と、fdformat -U コマンドを使用してファイルシステムをマウント解除し、フロッピーディスクをフォーマットする方法がある。
tar の -c オプションを使用してファイルをフォーマット済みフロッピーディスクにコピーすると、フロッピーディスク上の既存のファイルが破壊される。
フロッピーディスクをフォーマットし直すと、すでにフロッピーディスクに入っていたファイルやアーカイブが破壊される。
コピーしたいファイルが入っているディレクトリに変更します。
書き込み保護されていないフォーマット済みフロッピーディスクをドライブに挿入します。
volcheck コマンドを使用してフロッピーディスクを使用可能にします。
フロッピーディスク上のファイルシステムをマウント解除してフォーマットし直します。
$ fdformat -U/vol/dev/aliases/floppy0
tar コマンドを使用してファイルをフロッピーディスクにコピーします。
$ tar cvf /vol/dev/rdiskette0/unlabeled filename ...
指定した名前のファイルがフロッピーディスクにコピーされ、フロッピーディスク上の既存のファイルが上書きされます
フロッピーディスクの内容を表示する -t オプションをつけて tar コマンドを使用し、コピーしたファイルがフロッピーディスクに入っているかどうかを検査します。ファイルのリストを表示する方法についての詳細は、「フロッピーディスク上のファイルのリストを表示する方法 (tar)」を参照してください。
$ tar tvf /vol/dev/rdiskette0/unlabeled
フロッピーディスクをドライブから取り出します。
ファイル名をフロッピーディスクラベルに記入します。
次の例では、2 つのファイルがフロッピーディスクにコピーされます。
$ cd /home/smith $ ls evaluation* evaluation.doc evaluation.doc.backup $ tar cvf /vol/dev/rdiskette0/unlabeled evaluation* a evaluation.doc 86 blocks a evaluation.doc.backup 84 blocks $ tar tvf /vol/dev/rdiskette0/unlabeled
フロッピーディスクをドライブに挿入します。
volcheck を実行してフロッピーディスクを使用可能にします。
tar コマンドを使用してフロッピーディスク上のファイルのリストを表示します。
$ tar tvf /vol/dev/rdiskette0/unlabeled
次の例では、フロッピーディスクの内容一覧に 2 つのファイルが示されます。
$ tar tvf /vol/dev/rdiskette0/unlabeled rw-rw-rw-6693/10 44032 Oct 23 14:54 1996 evaluation.doc rw-rw-rw-6693/10 43008 Oct 23 14:47 1996 evaluation.doc.backup $
詳細は、tar(1) のマニュアルページを参照してください。
複数のボリューム交換ユーティリティが必要な場合は、cpio コマンドを使用してください。tar コマンドは単なる 1 つのボリュームに対して機能するユーティリティです。
ファイルを入れたいディレクトリに変更します。
フロッピーディスクをドライブに挿入します。
volcheck を実行してフロッピーディスクを使用可能にします。
tar コマンドを使用してファイルをフロッピーディスクから取り出します。
$ tar xvf /vol/dev/rdiskette0/unlabeled
フロッピーディスク上のすべてのファイルが現在のディレクトリにコピーされます。
現在のディレクトリの内容をリストして、ファイルが取り出されていることを確認します。
$ ls -l
フロッピーディスクをドライブから取り出します。
次の例では、フロッピーディスクからすべてのファイルがコピーされます。
$ /home/smith/Evaluations $ tar xvf /vol/dev/rdiskette0/unlabeled x evaluation.doc, 44032 bytes, 86 tape blocks x evaluation.doc.backup, 43008 bytes, 84 tape blocks $ ls -l
tar コマンドを使用してフロッピーディスクから個々のファイルを取り出します。
$ tar xvf /vol/dev/rdiskette0/unlabeled filename ...
指定した名前のファイルがフロッピーディスクから取り出され、現在の作業ディレクトリに格納されます。
大量のファイルやファイルシステムをフロッピーディスクにコピーする場合は、一杯になったフロッピーディスクを別のフォーマット済みフロッピーディスクと交換するように促すプロンプトを表示させることができます。cpio コマンドにはこの機能があります。使用する cpio コマンドはファイルをテープにコピーする場合と同じですが、テープデバイス名ではなくデバイスとして /vol/dev/aliases/floppy0 を指定します。cpio の使用方法については、「ディレクトリ内のすべてのファイルをテープにコピーする方法 (cpio)」を参照してください。
SunOS 5.x の cpio コマンドを使用して作成したアーカイブには、SunOS の旧リリースとの互換性がない場合があります。cpio コマンドを使用すると、他の複数の形式で読み込めるアーカイブを作成できます。これらの形式は、-H オプションと次のいずれかの引数で指定します。
crc または CRC - チェックサム付きの ASCII ヘッダー
ustar または USTAR - IEEE/P1003 データ交換
tar または TAR - tar のヘッダーと形式
odc - 小型デバイス番号付きの ASCII ヘッダー
bar - bar のヘッダーと形式
ヘッダーオプションを使用する場合の構文は次のとおりです。
cpio -o -H header-option < file-list > output-archive
cpio コマンドを使用してアーカイブを作成します。
$ cpio -oH odc < file-list > /dev/rmt/n
-H オプションは、入力に対して出力の場合と同じ意味を持ちます。-H オプションを使用してアーカイブを作成した場合は、読み込むときにも同じオプションを使用しないと、次のように cpio コマンドが失敗に終ります。
$ find . -print | cpio -oH tar > /tmp/test 113 blocks $ cpio -iH bar < /tmp/test cpio: Invalid header "bar" specified USAGE: cpio -i[bcdfkmrstuvBSV6] [-C size] [-E file] [-H hdr] [-I file [-M msg]] [-R id] [patterns] cpio -o[acvABLV] [-C size] [-H hdr] [-O file [-M msg]] cpio -p[adlmuvLV] [-R id] directory
各種オプションを使用してアーカイブを作成するときには、必ず媒体のラベルにアーカイブ上のファイル名やファイルシステム名といっしょにコマンド構文を記入してください。
アーカイブの作成時にどの cpio オプションを使用したかがわからない場合は、各種オプションをいろいろ組み合わせてみなければ、どの方法でアーカイブを読み込めるかがわかりません。
オプションのリストについては、cpio(1) のマニュアルページを参照してください。
SunOS 4.x の bar コマンドを使用してアーカイブしたファイルをフロッピーディスクから取り出すには、cpio の -H bar オプションを使用します。
ファイルを取り出すには、-H bar オプションと -i をいっしょに使用しなければなりません。bar ヘッダーオプションを使用してファイルを作成することはできません。
ファイルを入れたいディレクトリに変更します。
cpio コマンドを使用してフロッピーディスクから bar ファイルを取り出します。
フロッピーディスク上のすべてのファイルが現在のディレクトリにコピーされます。
$ cpio -ivH bar < /vol/dev/rdiskette/unlabeled
この章では、テープドライブを管理する方法について説明します。
この章で説明する手順は次のとおりです。
通常は、次の媒体を使用して Solaris 2.5 システムのバックアップを作成します。
1/2 インチのリールテープ
1/4 インチのストリームカートリッジテープ
8 mm のカートリッジテープ
4 mm のカートリッジテープ (DAT)
フロッピーディスクを使用してバックアップを実行することもできますが、時間がかかり煩雑です。
どの媒体を選択するかは、媒体をサポートする機器とファイルの格納に使用する媒体 (通常はテープ) の可用性によって決まります。バックアップはローカルシステムから実行しなければなりませんが、ファイルはリモートデバイスに書き込めます。
表 38-1 は、ファイルシステムの典型的なバックアップ媒体と、それぞれの長さ (または記憶容量) を示しています。
表 38-1 媒体の記憶容量
媒体 |
容量 |
テープの長さ |
---|---|---|
1/2 インチテープ |
40 〜 45M バイト |
2300 フィート |
60M バイト 1/4 インチカートリッジ |
60M バイト |
425 フィート |
150M バイト 1/4 インチカートリッジ |
150M バイト |
700 フィート |
2.3G バイト 8 mm |
2.3G バイト |
6000 フィート |
5.0G バイト 8 mm |
5.0G バイト |
13000 フィート |
3.5 インチフロッピーディスク |
1422 ブロック (1.44M バイト) |
|
4 mm のカートリッジテープの容量は、ドライブのタイプとテープに書き込むデータによって異なります。
バックアップに使用するテープまたはフロッピーディスクドライブに論理デバイス名を与えて指定します。この名前は、「raw」のデバイスファイルが入っているサブディレクトリを指し、ドライブの論理デバイス番号が含まれています。テープドライブの命名規則では、物理デバイス名ではなく論理デバイス名を使用します。表 38-2 は、この命名方式を示しています。
表 38-2 バックアップデバイスの基本的なデバイス名
デバイスの種類 |
名前 |
---|---|
テープ |
/dev/rmt/n |
フロッピーディスク |
/vol/dev/rdiskette0/unlabeled |
ドライブは、その「推奨」密度で書き込みますが、一般にこれはサポートされる最大密度を意味します。ほとんどの SCSI ドライブは、テープの密度や形式を自動的に検出し、それに応じて読み込むことができます。
テープドライブは、コントローラのタイプに応じて次の 2 つのカテゴリに分かれています。
XylogicsTM 472。1/2 インチラックマウント (トップロード) 式、リール間ドライブ用 (図 38-1 を参照)
SCSI。1/4 インチカートリッジ、1/2 インチフロントロード式、リール間の、4mm または 8 mm の Helical Scan ドライブ用。
/dev/rmt サブディレクトリには、各種の出力密度をサポートする一連のテープデバイスファイルが入っています。
通常は、図 38-1 のようにテープドライブデバイスを指定します。
同じシステム上で SCSI テープドライブと SCSI 以外のテープドライブを使用できます。
SCSI 以外のコントローラでは、最大 4 つのテープドライブを制御できます。
各ドライブ番号 (X) の密度文字は、次の段落で説明するようにコントローラとドライブの種類に応じて異なります。
表 38-3 は、各種のテープコントローラ/装置と媒体のデバイス省略名を示しています。ドライブ番号のデバイス省略名の 1 文字目を次表のように 0 にしなくても、システムに接続されるテープドライブ数に応じて 1、2、3 などを使用できるので注意してください。
表 38-3 テープコントローラ/装置と媒体のデバイス省略名
コントローラ |
ドライブデバイス
タイプ |
サイズ |
形式 |
トラック数 |
デバイス省略名 |
---|---|---|---|---|---|
リール |
|||||
Xylogics 472 |
Fujitsu M2444 |
1/2 インチ |
1600 bpi |
9 |
/dev/rmt/0m |
|
|
1/2 インチ |
6250 bpi |
9 |
/dev/rmt/0h |
SCSI フロントロード |
HP |
1/2 インチ |
800 bpi |
9 |
/dev/rmt/0m |
|
|
|
6250 bpi |
9 |
/dev/rmt/0h |
カートリッジ |
|||||
SCSI |
Sysgen |
1/4 インチ |
QIC-11 |
4 |
/dev/rmt/0l |
|
|
|
QIC-24 |
4 |
/dev/rmt/0m |
|
|
|
QIC-11 |
9 |
/dev/rmt/0l |
|
|
|
QIC-24 |
9 |
/dev/rmt/0m |
|
Emulex MT-02 |
1/4 インチ |
QIC-11 |
4 |
/dev/rmt/0l |
|
|
|
QIC-24 |
4 |
/dev/rmt/0m |
|
|
|
QIC-11 |
9 |
/dev/rmt/0l |
|
|
|
QIC-24 |
9 |
/dev/rmt/0m |
|
Archive QIC-150 |
1/4 インチ |
QIC-150 |
18 |
/dev/rmt/0h |
|
Wangtek QIC-150 |
1/4 インチ |
QIC-150 |
18 |
/dev/rmt/0h |
|
Desktop Backup Pack |
1/4 インチ |
QIC-150 |
18 |
/dev/rmt/0h |
|
Exabyte 8200 (2.3 GB) |
8 mm |
8 mm |
Helical Scan |
/dev/rmt/0m |
|
Exabyte 8500 (2.3 GB) |
8 mm |
8 mm |
Helical Scan |
/dev/rmt/0l |
|
Exabyte 8500 (5 GB) |
8 mm |
8 mm |
Helical Scan |
/dev/rmt/0m |
|
Archive Python |
4 mm |
4 mm |
Helical Scan |
/dev/rmt/0 |
Tapemaster または Xylogics 472 コントローラが付いた 1/2 インチのラックマウント式テープドライブの場合は、デバイス名の変数 A (/dev/rmt/XA) の代わりに表 38-4 for the A の密度を使用してください。
表 38-4 ラックマウント式 1/2 インチテープドライブの密度指定
文字 |
密度 |
---|---|
null |
デフォルトの推奨「最高」密度 (通常は非圧縮状態で 6250 bpi) |
l |
800 bpi |
m |
1600 bpi |
h |
6250 bpi |
u |
圧縮状態で 6250 bpi |
密度文字を省略すると、通常、テープは圧縮されずに最高密度で書き込まれます。
SCSI 1/4 インチカートリッジと 1/2 インチフロントロード式リールドライブの場合は、デバイス名の変数 A (/dev/rmt/XA) の代わりに表 38-5 の密度を使用してください。
表 38-5 SCSI テープドライブの形式または密度指定
文字 |
密度 1/4 インチカートリッジ |
密度 1/2 インチフロントロード式リール |
---|---|---|
null |
デフォルトの推奨 (最高) 密度 |
デフォルトの推奨 (最高) 密度 |
l |
QIC-11 形式 |
800 bpi |
m |
QIC-24 形式 |
1600 bpi |
h |
QIC-150 |
6250 bpi |
u |
予約済み |
予約済み |
1/4 インチカートリッジの場合、密度はデータが書き込まれる形式、つまり QIC 形式で指定されます。QIC-11 形式と QIC-24 形式では、各トラック上に 1 インチ当たり約 1000 バイトが書き込まれます。QIC-150 形式の密度は、やや高くなります。60M バイト 1/4 インチのカートリッジドライブの「推奨」密度は QIC-24 で、150M バイト 1/4 インチカートリッジドライブは QIC-150 です。
18 トラックドライブでは QIC-150 にしか書き込めません。QIC-24 や QIC-11 への書き込みに切り替えることはできません。形式セクションが役に立つのは、QIC-24 と QIC-11 の両方に書き込めるドライブだけです。
通常は、テープドライブを 0 から n までの論理デバイス番号で指定します。表 38-6 は、デフォルトの密度設定を使用してテープデバイス名を指定する方法を示しています。
表 38-6 テープドライブのデフォルト密度指定
指定するドライブ |
使用する番号 |
---|---|
第 1 のドライブ、巻き戻し |
/dev/rmt/0 |
第 1 のドライブ、巻き戻しなし |
/dev/rmt/0n |
第 2 のドライブ、巻き戻し |
/dev/rmt/1m |
第 2 のドライブ、巻き戻しなし |
/dev/rmt/1n |
デフォルトでは、ドライブはその「推奨」密度で書き込みますが、これは一般にそのドライブでサポートされる最大密度です。テープデバイスを指定しなければ、コマンドはデバイスでサポートされるデフォルト密度でドライブ番号 0 に書き込みます。
テープを特定の密度しかサポートされないテープドライブが付いたシステムに転送するには、目的の密度で書き込むデバイス名を指定します。表 38-7 は、テープドライブに別の密度を指定する方法を示しています。
表 38-7 テープドライブに別の密度を指定する
指定 |
番号 |
---|---|
第 1 のドライブ、巻き戻し、低密度 |
/dev/rmt/0l |
第 1 のドライブ、巻き戻しなし、低密度 |
/dev/rmt/0ln |
第 2 のドライブ、巻き戻し、中密度 |
/dev/rmt/1m |
第 2 のドライブ、巻き戻しなし、中密度 |
/dev/rmt/1mn |
デバイス名と密度文字については、図 38-1 を参照してください。
mt コマンドの status オプションを使用すると、Xylogics 472 1/2 インチテープドライブと Exabyte EXB-8200 8 mm テープドライブに関する状態情報を表示できます。
また、mt コマンドでは次の 1/4 インチテープドライブに関する情報もレポートされます。
情報を表示したいドライブにテープをロードします。
mt コマンドを使用してテープドライブ情報を表示します。
# mt -f /dev/rmt/n status
テープドライブ番号を 1、2、3 というように置き換えて手順 1 と 2 を繰り返し、使用可能なすべてのテープドライブに関する情報を表示します。
次の例は、QIC-150 テープドライブ (/dev/rmt/0) とExabyte テープドライブ (/dev/rmt/1) の状態を示しています。
$ mt -f /dev/rmt/0 status Archive QIC-150 tape drive: sense key(0x0)= No Additional Sense residual= 0 retries= 0 file no= 0 block no= 0 $ mt -f /dev/rmt/1 status Exabyte EXB-8200 8mm tape drive: sense key(0x0)= NO Additional Sense residual= 0 retries= 0 file no= 0 block no= 0
次の方法を使用すると、システムを手早くポーリングしてすべてのテープドライブを検査できます。この例では、テープドライブは 0 になっています。
$ for drive in 0 1 2 3 4 5 6 7 > do > mt -f /dev/rmt/$drive status > done Archive QIC-150 tape drive: sense key(0x0)= No Additional Sense residual= 0 retries= 0 file no= 0 block no= 0 /dev/rmt/1: No such file or directory /dev/rmt/2: No such file or directory /dev/rmt/3: No such file or directory /dev/rmt/4: No such file or directory /dev/rmt/5: No such file or directory /dev/rmt/6: No such file or directory /dev/rmt/7: No such file or directory $
テープドライブの状態情報を表示するには、mt コマンドを使用します。
$ mt -f /dev/rmt/n status
指定したテープドライブの状態が表示されます。
次の例では、ドライブ /dev/rmt/1 にはテープが入っていません。
$ mt -f /dev/rmt/1 status /dev/rmt/1: no tape loaded or drive offline $
次の例は、ドライブ /dev/rmt/1 内のテープの状態を示しています。
$ mt -f /dev/rmt/1 status Archive QIC-150 tape drive: sense key(0x6)= unit attention residual= 0 retries= 0 file no= 0 block no= 0 $
テープの読み込み中にエラーが発生した場合は、テープのたるみを直し、テープドライブを掃除してからやり直してください。
mt コマンドを使用して磁気テープカートリッジのたるみを直します。
$ mt -f /dev/rmt/n retension
次の例では、ドライブ /dev/rmt/1 内のテープのたるみを直します。
$ mt -f /dev/rmt/1 retension $
QIC 以外のテープドライブのたるみは直さないでください。
磁気テープカートリッジを巻き戻すには、mt コマンドを使用します。
$ mt -f /dev/rmt/n rewind
次の例では、ドライブ /dev/rmt/1 内のテープを巻き戻します。
$ mt -f /dev/rmt/1 rewind $
バックアップテープは読み込めなければ役に立ちません。そこで、テープドライブが正常に動作するように定期的に掃除してチェックするとよいでしょう。テープドライブのクリーニング手順については、ハードウェアのマニュアルを参照してください。次の 2 つの方法のうち、どちらかを使ってテープハードウェアをチェックできます。
テープにファイルをコピーし、読み込んで、コピーをオリジナルと比較する。
ufsdump コマンドの -v オプションを使用すると、媒体の内容をソースファイルシステムと比較して検査できます。-v オプションを機能させるには、ファイルシステムをマウント解除するか、完全にアイドル状態にしなければなりません。
ハードウェアは、システムからレポートされないような障害を起こす可能性があるので注意してください。
バックアップ後は、必ずテープにラベルを付けてください。第 33 章「ファイルシステムのバックアップと復元の概要」で説明したようなバックアップ方法を採用した場合は、ラベルに「テープA」、「テープB」というようにしておく必要があります。このラベルは変更しないでください。バックアップを実行するたびに別のテープラベルを作成して、バックアップ日付、マシン名、バックアップを作成したファイルシステム、バックアップレベル、テープ番号 (複数のボリュームにまたがる場合は n 本のうちの 1 本目)、サイト特有の情報を入力します。テープは、磁気を発生させる機器から離れた埃のない安全な場所に保管してください。サイトによっては、アーカイブしたテープを遠隔地の防火キャビネットに保管しています。
各ジョブ (バックアップ) がどの媒体 (テープボリューム) に格納されているかということと、各バックアップファイルがどこに保管されているかを記録したログを作成し、管理する必要があります。