このパートでは、Solaris 環境でデータのバックアップを取る手順とデータを復元する手順について説明します。次の章で構成されています。
ufsdump コマンドと ufsrestore コマンドを使用してデータのバックアップを取り、復元する際のガイドラインと計画について説明します。 |
|
個々のファイルとファイルシステム全体をローカルデバイスまたはリモートデバイスからバックアップする手順を説明します。 |
|
個々のファイルとファイルシステム全体を復元する詳しい手順を説明します。 |
|
ufsdump の機能、ufsdump コマンドと ufsrestore コマンドの構文とオプションについて説明します。 |
|
ファイルシステムをディスクにコピーする手順、dd、cpio、tar コマンドをさまざまなバックアップ媒体で使用する手順、ファイルを異なるヘッダー形式でコピーする手順について説明します。 |
|
テープドライブを追加する方法、テープドライブ、バックアップデバイス名を判断し、テープドライブと磁気テープカートリッジで作業する手順を説明します。 |
|
この章では、ufsdump コマンドと ufsrestore コマンドを使用し、ファイルシステム全体のバックアップをとって復元する際のガイドラインと計画の作成について説明します。
この章の内容は以下のとおりです。
ufsdump コマンドと ufsrestore コマンドを使用してファイルシステムをバックアップおよび復元する手順については、次を参照してください。
ファイルシステムのバックアップとは、消失、損傷、または破損に備えて、ファイルシステムを取り外し可能な媒体 (テープなど) にコピーすることを意味します。ファイルシステムの復元とは、最新のバックアップファイルを取り外し可能な媒体から作業ディレクトリにコピーすることを意味します。
この章では、「スケジュールされた」バックアップ処理と復元処理に使用するコマンド (ufsdump と ufsrestore) について説明しますが、他にもファイルを共有または転送するためにファイルとファイルシステムのコピーに使用できるコマンドがあります。表 33-1 は、個々のファイルやファイルシステムを媒体にコピーする各コマンドの説明箇所を示しています。
表 33-1 ファイルとファイルシステムをコピーするコマンド
操作 |
使用するコマンド |
参照先 |
---|---|---|
ファイルシステム全体または個々のファイルシステムをローカルまたはリモートのテープデバイスにコピーする |
ufsdump(1M) コマンド |
第 34 章「ファイルとファイルシステムのバックアップの手順」 または 第 36 章「ufsdump コマンドと ufsrestore コマンドの参照情報」 |
ネットワーク上のすべてのシステムのファイルシステム全体をサーバーからバックアップする |
Solstice BackupTM ソフトウェア | |
NIS+ マスターサーバーをバックアップ、復元する |
nisbackup(1M) コマンドと nisrestore(1M) コマンド | |
ファイルをテープ上でコピー、表示、検索する ファイルをフロッピーディスク上でコピー、表示、検索する |
tar(1)、cpio(1)、または pax(1) コマンド tar(1) コマンド | |
マスターディスクをクローンディスクにコピーする |
dd(1M) コマンド | |
ファイルシステム全体または個々のファイルシステムを、取り外し可能な媒体から作業ディレクトリに復元する |
ufsrestore(1M) コマンド |
ファイルのバックアップは、最も重要なシステム管理作業の 1 つです。次のような原因によるデータの消失に備えて、定期的にバックアップを実行する必要があります。
システムのクラッシュ
不注意によるファイルの削除
ハードウェア障害
天災 (火災、台風など)
システムをインストールし直したりアップグレードするときの問題
表 33-2 に、バックアップ処理中にファイルシステムを格納するための典型的なテープデバイスを示します。テープデバイスについての詳細は、第 38 章「テープドライブの管理手順」 を参照してください。
表 33-2 ファイルシステムのバックアップに使用する典型的な媒体
媒体 | |
---|---|
1/2 インチのリールテープ |
140M バイト (6250bpi) |
2.5G バイト、 1/4 インチのカートリッジ (QIC) テープ |
2.5G バイト |
DDS3 4-mm カートリッジテープ (DAT) |
12 〜 24 G バイト |
14-Gbyte 8-mm カートリッジテープ |
14G バイト |
DLTTM 7000 1/2 インチ カートリッジテープ |
35 〜 70G バイト |
頻繁に更新されるファイルシステムなど、ユーザーにとって重要なファイルシステムはバックアップしておく必要があります。表 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 コマンドまたはファイルに渡すことができる。 |
|
自動バックアップ
|
crontab ユーティリティを使用して、ufsdump コマンドを起動するスクリプトを実行する 。 |
|
バックアップテーブルへのユーザーアクセスを制限する。 |
-a オプションを使用する。 |
|
実際にバックアップを実行せずに、バックアップのサイズを決定する。 |
-S オプションを使用する。 |
|
ファイルシステムがバックアップされたときのログを保管する。 |
-u オプションを使用する。 |
|
テープの内容をソースファイルシステムと対照して検査する。 |
-v オプションを使用する。 |
ufsrestore |
|
|
|
個々のファイルシステムまたはファイルシステム全体を、ローカルまたはリモートのテープドライブから復元する |
|
ufsdump コマンドを使用すると、完全バックアップまたは増分バックアップを実行できます。表 33-6 に、この 2 つのタイプのバックアップ手順の違いを示します。
表 33-6 完全バックアップと増分バックアップの違い
バックアップのタイプ |
コピー内容 |
長所 |
短所 |
---|---|---|---|
完全 |
すべてを 1 箇所にまとめることができる。 |
大量のバックアップテープが必要であり、書き込みに時間がかかる。ドライブはテープ上でファイルが入っている位置に順番に移動しなければならないので、個々のファイルの検索時間が長くなる。複数のテープを検索しなければならない場合もある。 |
|
増分 |
ファイルシステム内の小さな変化を簡単に検索できる。 |
どの増分テープにファイルが入っているかを探すのに時間がかかることがある。最後の完全ダンプに戻らなければならない場合もある。 |
「バックアップスケジュール」とは、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 に、最も一般的に使用される増分バックアップをスケジュールを示します。これは、ほとんどの場合に推奨できるスケジュールです。このスケジュールで実行される処理は次のとおりです。
前週の終わりの下位レベルのバックアップ以降に変更があったすべてのファイルが毎日保存される。
月〜金のレベル 9 のバックアップの場合は、直前のレベル 0 またはレベル 5 が最も近い下位バックアップレベルになる。したがって各週のテープには、前週の終わり (第 1 週の場合は初期レベル 0) 以降に変更があったすべてのファイルが累積される。
毎週金曜日のレベル 5 の場合、レベルのうち一番近いレベルのバックアップは、月初めに実行されたレベル 0 である。したがって、毎週金曜日のテープには、月初めからその時点までに変更があったすべてのファイルが入っている。
未固定 |
月 |
火 |
水 |
木 |
金 |
|
---|---|---|---|---|---|---|
月の 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 |
表 33-8 は、前のスケジュールを使用して、テープの内容が 2 週間でどのように変化するかを示します。各文字は別のファイルを表します。
表 33-8 日単位/週単位累積スケジュールのテープの内容
月曜日 |
火曜日 |
水曜日 |
木曜日 |
金曜日 |
|
---|---|---|---|---|---|
第 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 |
このスケジュールでは、6 本 (日単位テープを再利用したい場合) または 9 本 (曜日ごとに 4 本の日単位テープを別々に使用したい場合) のテープが必要になります。その内訳は、レベル 0 に 1 本、金曜日用に 4 本、日単位テープ用に 1 本、または 4 本です。
ファイルシステム全体を復元する必要があれば、次のテープが必要になります。その内訳は、レベル 0 が 1 本、最後の金曜日のテープ 1 本、前週の金曜日以降の最新の日単位テープ 1 本です。
表 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 本です。
ファイルシステム全体を復元する必要があれば、次の本数のテープが必要になります。その内訳は、レベル 0 が 1 本、すべての金曜日のテープ、前週の金曜日以降の最新の日単位テープ 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 本のテープが必要になります。
ファイルシステム全体を復元する必要があれば、次のテープが必要になります。その内訳は、レベル 0 に 1 本、前回の金曜日のテープ、最後の金曜日以降のその週のすべての日単位テープです。
表 33-13 は、ユーザーがプログラム開発や文書作成のようなファイル集約型の作業を実行する小型ネットワーク上の、使用頻度の高いファイルサーバーのバックアップ方針の例を示しています。この例は、バックアップ期間が日曜日に始まり、1 週 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 ファイル中には、ドライブを使用する各クライアントのエントリが入っていなければならない。また、バックアップを実行する各システムの /.rhosts ファイルには、バックアップを開始するシステムのエントリが入っていなければならない。
システム上でリモートドライブを指定するには、リモートテープドライブを持つシステムの OS バージョンと一致する命名規則を使用する。たとえば、SunOS 4.1.1 またはその互換バージョンを実行しているシステム上のリモートドライブには /dev/rst0 を使用し、Solaris 7 またはその互換バージョンを実行しているシステムには /dev/rmt/0 を使用する。
Solaris 2.5 およびその互換バージョンが動作している NIS+ マスターサーバーをバックアップするためには nisbackup コマンドを使用して下さい。このコマンドを使用する方法については、『Solaris ネーミングの管理』を参照してください。
ufsdump コマンドを使用してファイルシステムのバックアップを作成する一般的な手順を次に示します。この例では、オプションと引数の使用方法を示しています。
スーパーユーザーになります。
システムをレベル S (シングルユーザーモード) に移行します。
# shutdown -g30 -y |
[省略可能] fsck コマンドを指定してファイルシステムの整合性をチェックします。
-m オプションを使用して fsck コマンドを実行すると、ファイルシステムの整合性がチェックされます。たとえば、電源障害が発生すると、ファイルが非整合状態になることがあります。fsck コマンドについての詳細は、第 31 章「ファイルシステムの整合性チェック」を参照してください。
# fsck -m /dev/rdsk/ device-name |
ファイルシステムをリモートテープドライブにバックアップする場合
テープドライブのデバイス名を確認します。
デフォルトのテープドライブは、/dev/rmt/0 です。
書き込み保護されていないテープをテープドライブに挿入します。
ufsdump コマンドを使用してファイルシステムのバックアップを作成します。
次の表を参照して、ufsdump コマンドの最も一般的なオプションと引数を選択します。その他のオプションと引数については、第 36 章「ufsdump コマンドと ufsrestore コマンドの参照情報」を参照してください。
操作 |
使用するオプションまたは引数 |
例 |
参照先 |
---|---|---|---|
完全バックアップを実行する |
0 オプション |
ufsdump 0ucf /dev/rmt/0 / | |
増分バックアップを実行する |
1 から 9 までのオプション |
ufsdump 9ucf /dev/rmt/0/ | |
個々のファイルのバックアップを実行する |
ファイルまたはディレクトリを指定する |
ufsdump ucf /dev/rmt/0 /export/home/kryten | |
ダンプを /etc/dumpdates ファイルに記録する |
-u オプション |
ufsdump 9ucf /dev/rmt/ 0 /export/home | |
カートリッジテープを指定する |
-c オプション |
ufsdump 9ucf /dev/rmt/0 /export/home | |
テープドライブを指定する |
-f dump-file |
ufsdump 9ucf /dev/rmt/0 /export/home | |
ローカルファイルシステムをリモートホストのテープデバイスにバックアップする |
remote-system:dump-file |
ufsdump 0ucf pluto:/dev/rmt/0 /export/home |
「例 - リモートシステムへの完全バックアップ (Solaris 2.6 のデータを Solaris 7 システムへ)」 |
プロンプトが表示されたら、テープを取り出して次のテープと交換します。
各テープにボリューム番号、レベル、日付、システム名、ディスクスライス、ファイルシステム名を記入したラベルを貼ります。
Control-d キーを押してシステムをレベル 3 の動作に戻します。
ufsrestore コマンドでテープの内容を表示して、バックアップが正常に実行されたことを確認します。
このコマンドについては、第 35 章「ファイルとファイルシステムの復元の手順」で説明します。
次の例では、ルート (/) ファイルシステムの完全バックアップを QIC-150 テープ (/dev/rmt/0) 上に作成します。
# shutdown -g30 -y # 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 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 . . . # |
この例では、ルート (/) ファイルシステムの増分バックアップを 4 mm の DAT テープデバイスに作成します。
# ufsdump 9ucf /dev/rmt/0 / DUMP: Writing 63 Kilobyte records DUMP: Date of this level 9 dump: Tue Jun 09 11:04:41 1998 DUMP: Date of last level 0 dump: Tue Jun 09 10:14:54 1998 DUMP: Dumping /dev/rdsk/c0t3d0s0 (pluto:/) 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: Estimated 1502 blocks (751KB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: Tape rewinding DUMP: 1384 blocks (692KB) on 1 volume at 51 KB/sec DUMP: DUMP IS DONE DUMP: Level 9 dump on Tue Jun 09 11:04:41 1998 # ufsrestore tf /dev/rmt/0 39872 ./var 62671 ./var/adm 39915 ./var/adm/sa 40018 ./var/adm/sa/sa09 62810 ./var/adm/sulog 62888 ./var/adm/pacct 91154 ./var/cron 91311 ./var/cron/log 5716 ./var/mail 5835 ./var/mail/adm 45585 ./var/spool 51388 ./var/spool/mqueue 91155 ./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: Tue Jun 09 11:12:44 1998 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t3d0s7 (pluto:/export/home) to /dev/rmt/0. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Estimated 232 blocks (116KB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: Tape rewinding DUMP: 124 blocks (62KB) on 1 volume at 8 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.6 システム上のローカルの /export/home ファイルシステムを、リモートの Solaris 7 システム pluto 上のテープデバイスに完全バックアップします。
# ufsdump 0ucf pluto:/dev/rmt/0 /export/home # ufsdump 0ucf pluto:/dev/rmt/0 /export/home DUMP: Writing 63 Kilobyte records DUMP: Date of this level 0 dump: Tue Jun 09 13:54:27 1998 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t3d0s7 (venus:/export/home) to pluto:/dev/rmt/0. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Estimated 38310 blocks (18.71MB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: Tape rewinding DUMP: 38302 blocks (18.70MB) on 1 volume at 98 KB/sec DUMP: DUMP IS DONE DUMP: Level 0 dump on Tue Jun 09 13:54:27 1998 # # ufsrestore tf pluto:/dev/rmt/0 2 . 3 ./lost+found 34180 ./kryten 34182 ./kryten/.login 34183 ./kryten/.cshrc 51266 ./kryten/letters 51272 ./kryten/letters/letter1 51273 ./kryten/letters/letter2 51274 ./kryten/letters/letter3 57032 ./kryten/memos 74095 ./kryten/reports 74096 ./kryten/reports/reportA 74097 ./kryten/reports/reportB 74098 ./kryten/reports/reportC . . . # |
次の例では、Solaris 7 システム上のローカルの /export/home ファイルシステムを、リモートの SunOS 4.1.3 システム mars 上のテープデバイスに完全バックアップします。
ufsdump コマンドといっしょに SunOS 4.0/4.1 用のデバイス名 (/dev/rst0) が使用されているので注意してください。
# ufsdump 0ucf mars:/dev/rst0 /export/home DUMP: Writing 63 Kilobyte records DUMP: Date of this level 0 dump: Fri Oct 24 15:06:47 1997 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t3d0s7 (earth:/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 24 15:06:47 1997 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.3 システム mars 上のローカルのルート (/) ファイルシステムを、Solaris 7 システム pluto 上のリモートテープデバイスに完全バックアップします。
SunOS 4.1.3 およびその互換バージョンのシステム上のデータをバックアップするときには、ufsdump コマンドではなく dump コマンドを使用しなければならないことに注意してください。
# dump 0ucf pluto:/dev/rmt/0 / DUMP: Date of this level 0 dump: Tue Oct 21 16:05:19 1997 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 21 16:05:19 1997 DUMP: Tape rewinding DUMP: 8690 blocks (4.24MB) on 1 volume DUMP: DUMP IS DONE # 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 . . . # |
この章では、ファイルシステムを復元する手順について説明します。
この章で説明する手順は次のとおりです。
この章では、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 が現在の作業ディレクトリにファイル階層を作成し直します。たとえば、/export/doc/books ディレクトリ (/export はファイルシステムです) からバックアップされたファイルは、/export からの相対的な位置に保存されます。つまり、docs ディレクトリ内の book1 ファイルは、テープ上で ./doc/books/book1 として保存されます。後で、./doc/books/book1 ファイルを /var/tmp ディレクトリに復元する場合、そのファイルは /var/tmp/doc/books/book1 に復元されます。
個別のファイルやディレクトリを復元するときには、/var/tmp などの一時的な場所に復元するのが賢明です。ファイルやディレクトリを確認したら、それを適当な位置に移動させてもかまいません。個別のファイルやディレクトリはそれぞれ元の位置に復元できます。その場合には、新しいファイルをバックアップテープからの古いバージョンで上書きしないかどうか確かめてください。
一時的な場合でも、/tmp ディレクトリにファイルを復元してはなりません。一般的に /tmp ディレクトリは、TMPFS ファイルシステムとしてマウントされており、 TMPFS は ACL などの UFS ファイルシステム属性をサポートしていません。
次のことを知っておく必要があります。
復元したいファイルはどのテープに入っているか
復元したいファイルのパス名
復元したいファイルが前回いつごろ変更されたかをユーザーにたずねます。
自分が作成したバックアップ計画を参照して、そのファイルまたはファイルシステムが入っていた前回のバックアップの日付を調べます。
ファイルの最新バージョンを検索するには、増分バックアップファイルを最高レベル (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 tfs /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/restore などのサブディレクトリを作成し、そのディレクトリに移動してファイルを復元することをお勧めします。
階層を復元する場合は、ファイルを置くファイルシステム上の一時ディレクトリにファイルを復元します。復元後、 mv コマンドで、階層全体を目的の場所に移動します。
ufsrestore コマンドを使って対話式で復元を開始します。
情報を伝えるためのメッセージと ufsrestore> プロンプトが表示されます。
# ufsrestore if /dev/rmt/n |
復元したいファイルのリストを作成します。
verbose モードをオンにして、復元するファイル名を表示します。
ufsrestore> verbose |
リストが完了したら、extract コマンドを使います。
ufsrestore> extract |
どのボリューム番号を使用するかを指定するプロンプトが表示されます。
ボリューム番号を入力して、Return キーを押します。ボリュームが 1 つしかない場合には、1 を入力して Return キーを押します。
Specify next volume #: 1 |
リスト内のファイルとディレクトリが抽出され、現在の作業ディレクトリに復元されます。
現在の作業ディレクトリのモードを変更したくない場合は、set owner/mode プロンプトが表示されたときに n を入力します。
set owner/mode for `.'? [yn] n |
ufsrestore が最後の整理を行なっている間は、ufsrestore プロンプトが表示されるまでにはしばらく時間がかかります。
ufsrestore プログラムを終了します。
ufsrestore> quit |
シェルプロンプトが表示されます。
ファイルが復元されたことを確認します。
次の例では、ファイル /etc/passwd と /etc/shadow がバックアップテープから復元されています。
# cd /var/tmp # ufsrestore if /dev/rmt/0 ufsrestore> ls .: .cpr_config etc/ lost+found/ sbin/ usr/ TT_DB/ export/ mnt/ sccs/ var/ b/ home/ net/ share/ vol/ bin kernel/ opt/ shared/ ws/ dev/ lib platform/ src/ xfn/ devices/ license/ proc/ tmp/ 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 # |
スーパーユーザーになります。
安全のためにテープを書き込み保護の状態にします。
ボリューム 1 のテープをテープドライブに挿入します。
ファイルを一時的に復元するためのディレクトリに移動します。
# cd /var/tmp |
他のユーザーとの衝突を防ぐために、/var/tmp などのサブディレクトリを作成し、そのディレクトリに移動して、ファイルを復元することをお勧めします。
階層を復元する場合は、ファイルを置くファイルシステム上の一時ディレクトリにファイルを復元します。復元後、mv コマンドで、階層全体を目的の場所に移動します。
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/shadow Verify volume and initialize maps Media block size is 126 Dump date: Tue Jun 09 14:30:16 1998 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 Directories already exist, set modes anyway? [yn] n # cd etc # mv passwd /etc # mv shadow /etc # ls -l etc |
ufsrestore コマンドを使用するときにテープデバイス名の前に remote-host: を追加して、ファイルをリモートドライブから復元することができます。構文は次のようになります。
ufsrestore xf [user@]remote-host:/dev/rmt/n filename |
次の例では、システム venus 上にあるリモートテープドライブ /dev/rmt/0 を使用してファイルを復元します。
# ufsrestore xf 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 から始め、一番高いレベルまで継続します。
ファイルシステムが復元されていることを確認します。
# ls |
restoresymtable ファイルを削除します。
# rm restoresymtable |
ufsrestore によって作成された restoresymtable が削除されます。
別のディレクトリに変更します。
# cd / |
新しく復元されたファイルシステムをマウント解除します。
# umount /mnt |
最後のテープを外し、書き込み保護されていない新しいテープをテープドライブに挿入します。
ufsdump コマンドを使って、新しく復元されたファイルシステムのレベル 0 のバックアップをとります。
# 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: 410400 sectors in 270 cylinders of 19 tracks, 80 sectors 200.4MB in 17 cyl groups (16 c/g, 11.88MB/g, 5696 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 24432, 48832, 73232, 97632, 122032, 146432, 170832, 195232, 219632, 244032, 268432, 292832, 317232, 341632, 366032, 390432, # mount /dev/dsk/c0t3d0s7 /mnt # cd /mnt # ufsrestore rvf /dev/rmt/0 Verify volume and initialize maps Media block size is 126 Dump date: Tue Jun 09 15:01:03 1998 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 |
テープを書き込み保護します。
ufsrestore コマンドを使ってルートファイルシステムを復元します。
# ufsrestore rvf /dev/rmt/n |
レベル 0 のテープが復元されます。
テープを外し、次のレベルのテープをドライブにロードします。
テープの復元は必ず 0 から始め、最も低いレベルから最も高いレベルまで続けます。
ufsrestore コマンドは必要なだけ続けて使用します。
# ufsrestore rvf /dev/rmt/n |
次のレベルのテープが復元されます。
テープを追加するたびに、手順 6 と手順 7 を繰り返します。
ファイルシステムが復元されていることを確認します。
# 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 ノード割り当てを変更するので、新しく作成されたファイルシステムのバックアップは、必ずすぐにとるようにしてください。
システムをリブートします。
# 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 1998 /dev/rdsk/c0t3d0s0 9 Wed Nov 6 16:14:51 1998 /dev/rdsk/c0t3d0s7 0 Wed Nov 6 16:18:08 1998
増分バックアップを実行するときに、ufsdump コマンドは /etc/dumpdates を検索して、下のレベルの最後のバックアップ日付を調べます。次に、下のレベルのバックアップ以降に更新されたすべてのファイルを媒体にコピーします。バックアップが完了すると、完了したばかりのバックアップを記述する新しい情報行によって、そのレベルの最後のバックアップの情報行が置き換えられます。
/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 でのデバイス名 (/dev/rst0 など) を使用します。システムが Solaris ソフトウェアを実行中の場合は、SunOS 5.7 でのデバイス名 (/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 コマンドはデフォルト設定を使用します。テープカートリッジ (-c)、密度 (-d)、サイズ (-s)、トラック数 (-t) を指定できます。引数がオプションの順序と合っていれば、オプションはいくつでも指定できます。
表 36-1 は、ufsdump コマンドでは実行できない作業を示しています。
表 36-1 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-2 は、ufsdump コマンドのオプションを示しています。
表 36-2 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 アクセスエントリを削除しておかなければならない。
セキュリティについての詳細は、『Solaris のシステム管理 (第 2 巻)』の「システムセキュリティの管理の概要」を参照してください。
ufsrestore の構文は次のとおりです。
ufsrestore [options][arguments][filename ...] |
options |
1 文字のオプション名からなる 1 つの文字列。i、r、R、t、x から 1 つだけ選択する。 |
arguments |
オプションに対応する引数。オプションと同じ順序で並んでいなければならない。 |
filename |
x または t オプションの引数として、復元するファイルを指定する。常に最後に指定する。 |
ufsrestore コマンドには、表 36-3 に示すオプションのうちの 1 つを指定する必要があります。
表 36-3 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-3 からオプションを 1 つ選択する他に、表 36-4 からもオプションを選択できます。
表 36-4 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 |
指定したhttp://www.aaapc.co.jp/Hokkaido/area/hidaka/try/t-1c.htmファイルが、バックアップ階層内の位置に関係なくディスク上の現在のディレクトリに復元され、i ノード番号を使用して名前が変更される。たとえば、現在の作業ディレクトリが /files であれば、i ノード番号が 42 のバックアップ ./dready/fcs/test 内のファイルは、/files/42 として復元される。このオプションが便利なのは、少数のファイルを抽出するときだけである。 |
s n |
最初のボリューム媒体上の n 番目のバックアップファイルまでスキップする。このオプションは、1 本のテープに複数のバックアップを入れるときに便利である。 |
v |
詳細表示。各ファイルが復元されるたびに、その名前と i ノード番号が表示される。 |
y |
媒体の読み込みエラーが発生しても処理を続行する。処理を停止して続行するかどうかを選択するプロンプトを表示せずに、不良ブロックをスキップしようとする。 |
オプション |
説明 |
---|---|
ls [directory-name] |
現在のディレクトリまたは指定したディレクトリの内容が表示される。ディレクトリは接尾辞 / 付きで表示され、現在のリスト内で復元 (抽出) されるエントリは接頭辞 * 付きで表示される。詳細オプションを使用すると、i ノード番号が表示される。 |
cd directory-name |
バックアップ階層内の指定したディレクトリに切り替える。 |
add [filename] |
現在のディレクトリまたは指定したファイルやディレクトリを、抽出 (復元) するファイルのリストに追加する。h オプションを使用しない場合は、指定したディレクトリとそのサブディレクトリ内のすべてのファイルがリストに追加される。ディレクトリに復元したいすべてのファイルが 1 つのバックアップテープやフロッピーディスクに入っていないことがあるので注意する必要がある。すべてのファイルの最新のリビジョンを抽出するには、さまざまなレベルの複数のバックアップから復元しなければならないことがある。 |
delete [filename] |
現在のディレクトリまたは指定したファイルやディレクトリを、抽出 (復元) するファイルのリストから削除する。h オプションを使用しない場合は、指定したディレクトリとそのサブディレクトリ内のすべてのファイルが削除される。ファイルとディレクトリは、構築中の抽出リストからのみ削除されるので注意する必要がある。媒体またはファイルシステムからは削除されない。 |
extract |
リスト内のファイルを抽出し、ディスク上の現在の作業ディレクトリからの相対パスで指定される位置に復元する。1 つのボリュームのバックアップについてボリューム番号をたずねるプロンプトが表示されたら 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(1M) | |
ファイルシステムをテープから復元する |
ufsrestore(1M) | |
ファイルを他のシステムに転送する |
pax(1), tar(1), または cpio(1) | |
ファイルまたはファイルシステムをディスクにコピーする |
dd(1M) | |
ファイルをフロッピーディスクにコピーする |
tar(1) |
表 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 コマンドは、読み込みブロック数と書き込みブロック数をレポートします。+ の次の数値は、部分的にコピーされたブロックの数です。デフォルトのブロックサイズは 512 バイトです。
dd コマンドの構文は、他のほとんどのコマンドとは異なっています。オプションは keyword=value のペアで指定します。この場合、keyword は設定したいオプションで、value はそのオプションの引数です。たとえば、標準入力と標準出力を次の構文に置き換えることができます。
$ dd if=input-file of=output-file |
たとえば、上記の例のリダイレクト記号の代わりに keyword=value の形式で指定するには、次のように入力します。
$ dd if=/floppy/floppy0 of=/tmp/output.file |
コピー元とコピー先のディスクが同じディスクジオメトリを持っているかどうかを確認します。
スーパーユーザーになります。
/reconfigure ファイルをシステムに作成します。これによって、システムは追加されるクローンディスクをリブート時に認識します。
# touch /reconfigure |
システムをシャットダウンします。
# init 0 |
クローンディスクをシステムに接続します。
システムをブートします。
ok boot |
dd コマンドを使用してマスターディスクをクローンディスクにコピーします。
# dd if=/dev/dsk/device-name of=/dev/dsk/device-name bs=blocksize |
if=/dev/dsk/device-name |
マスターディスクデバイスのオーバーラップスライスを指定する。通常はスライス 2。 |
of=/dev/dsk/device-name |
クローンディスクデバイスのオーバーラップスライスを指定する。通常はスライス 2。 |
bs=blocksize |
ブロックサイズ (128K バイト、256K バイトなど)。ブロックサイズの値を大きくすると、コピーに要する時間を短縮できる。 |
新しいファイルシステムをチェックします。
# fsck /dev/rdsk/device-name |
クローンディスクのルート (/) ファイルシステムをマウントします。
# mount /dev/dsk/device-name /mnt |
クローンディスクの /etc/vfstab を編集して、正しいデバイス名を参照するようにします。
たとえば、c0t3d0 をすべて c0t1d0 に変更します。
クローンディスクのルート (/) ファイルシステムをマウント解除します。
# umount /mnt |
システムを停止します。
# init 0 |
クローンディスクからシングルユーザーモードにブートします。
# boot diskn -s |
installboot コマンドをクローンディスクで実行する必要ありません。これは、ブートブロックがオーバーラップスライスの一部としてコピーされるためです。
クローンディスクの構成を解除します。
# sys-unconfig |
構成を解除すると、システムが停止します。
再びクローンディスクからブートし、ホスト名や時間帯などのシステム情報を与えます。
# boot diskn |
スーパーユーザーとしてログインして、一度システムがブートした後のシステム情報を確認します。
hostname console login: |
# init 0 ok boot # dd if=/dev/dsk/c0t0d0s2 of=/dev/dsk/c0t2d0s2 bs=128k # fsck /dev/rdsk/c0t2d0s2 # mount /dev/dsk/c0t2d0s2 /mnt # cd /mnt/etc # vi vfstab (新しいディスクのエントリを変更) # 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 コマンドを組み合わせて実行し、ディレクトリツリーを filesystem1 から filesystem2 へコピーします。
# find . -print -depth | cpio -pdmu /filesystem2 |
. |
現在の作業ディレクトリ内で処理を始める。 |
|
ファイル名を出力する。 |
-depth |
ディレクトリ階層を下位へたどってバックアップ中にファイル名を出力する。 |
-p |
ファイルのリストを作成する。 |
-d |
必要に応じてディレクトリを作成する。 |
-m |
ディレクトリ上で正しい変更時刻を設定する。 |
指定したディレクトリ名からファイルがコピーされ、シンボリックリンクは保持されます。
また、-u オプションも指定できます。このオプションは、無条件にコピーを実行します。-u オプションを指定しないと、古いファイルは、新しいファイルで置換されません。これは、ディレクトリを確実にコピーしたいとき、コピーするファイルの一部がすでにターゲットのディレクトリ中に存在する場合に便利です。
コピー先ディレクトリの内容を表示して、コピーに成功したかどうかを確認します。
# cd filesystem2 # ls |
該当する場合は、ソースディレクトリを削除します。
# rm -rf /filesystem1 |
# cd /data1 # find . -print -depth | cpio -pdm /data2 19013 blocks # cd /data2 # ls # rm -rf /data1 |
詳細は、cpio(1) のマニュアルページを参照してください。
pax、tar、cpio コマンドを使用すると、ファイルとファイルシステムをテープにコピーできます。どのコマンドを選択するかは、コピーする目的に応じて異なります。3 つのコマンドはすべて raw デバイスを使用するので、使用する前にテープ上でファイルシステムをフォーマットまたは作成する必要はありません。
表 37-3 cpio、pax、tar コマンドの長所と短所
使用するテープドライブとデバイス名は、各システムのハードウェアと構成によって異なります。テープドライブとデバイス名の詳細については、「使用する媒体の選択」を参照してください。
tar コマンドでファイルをテープにコピーする前に、次のことを知っておかなければなりません。
tar コマンドに -c オプションを指定してファイルをテープにコピーすると、テープに入っているすべての既存のファイルまたはテープの現存の位置以降にある既存のファイルすべてが破壊 (上書き) される。
ファイル名の一部にファイル名置換ワイルドカード文字 (? と *) を使用して指定できる。たとえば、接尾辞 .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 [filename] |
t |
テープ上のファイルの内容一覧が表示される。 |
v |
t オプションといっしょに使用すると、テープ上のファイルに関する詳細情報が表示される。 |
f /dev/rmt/n |
テープデバイスを示す。 |
filename ... |
リスト表示したいファイルとディレクトリを指定する。 |
次の例では、ドライブ 0 のテープに含まれているファイルのリストを表示します。
$ 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 ...] |
x |
指定したアーカイブファイルからファイルを抽出するように指定する。指定したドライブのテープに含まれるすべてのファイルが現在のディレクトリにコピーされる。 |
v |
各ファイルがアーカイブされるたびに、その名前を表示する。 |
f /dev/rmt/n |
アーカイブが入っているテープデバイスを示す。 |
filename |
取り出すファイルを指定する。 |
現在のディレクトリの内容をリストして、ファイルがコピーされていることを確認します。
$ 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 filename ... |
-w |
書き込みモードを有効にする。 |
-f /dev/rmt/0 |
テープドライブを識別する。 |
filename ... |
コピーしたいファイルとディレクトリを指定する。 |
ファイルがテープにコピーされていることを確認します。
$ pax -l -f /dev/rmt/0 |
ドライブからテープを取り出して、テープラベルにファイル名を記入します。
$ pax -w -f /dev/rmt/0 . $ pax -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/0 |
テープをドライブから取り出して、テープラベルにファイル名を記入します。
次の例では、ディレクトリ /export/home/kryten 内のすべてのファイルを、テープドライブ 0 のテープにコピーします。
$ cd /export/home/kryten $ ls | cpio -oc > /dev/rmt/0 8 blocks $ cpio -civt < /dev/rmt/0 drwxr-xr-x 2 kryten users 0 Jun 9 15:56 1998, letters drwxr-xr-x 2 kryten users 0 Jun 9 15:56 1998, memos drwxr-xr-x 2 kryten users 0 Jun 9 15:55 1998, reports 8 blocks $ |
内容一覧を表示すると、cpio コマンドはアーカイブ全体を処理しなければならないので、アーカイブファイルの読み込みに長時間かかります。
テープをテープドライブに挿入します。
cpio コマンドを使用してテープ上のファイルのリストを表示します。
$ cpio -civt < /dev/rmt/n |
-c |
ファイルを ASCII 文字形式で読み込むように指定する。 |
-i |
cpio がコピーインモードで動作することを指定する (この時点ではファイルをリストするだけ)。 |
-v |
ls -l コマンドと同様の形式で出力を表示する。 |
-t |
指定したテープドライブ内のテープ上にあるファイルの内容一覧が表示される。 |
< /dev/rmt/n |
既存の cpio アーカイブの入力ファイルを指定する。 |
次の例では、ドライブ 0 のテープに含まれているファイルのリストを表示します
$ cpio -civt < /dev/rmt/0 drwxr-xr-x 2 rimmer users 0 Jun 9 16:07 1998, answers drwxr-xr-x 2 rimmer users 0 Jun 9 16:07 1998, sc.directives drwxr-xr-x 2 rimmer users 0 Jun 9 16:07 1998, tests 8 blocks |
相対パス名を使用してアーカイブを作成した場合、入力ファイルはそれを取り出すときに現在のディレクトリ内のディレクトリとして作成されます。ただし、絶対パス名を指定してアーカイブを作成した場合は、それと同じ絶対パス名を使用してシステム上でファイルが再び作成されます。
絶対パス名を使用すると、自分のシステム上にある元のファイルを上書きすることになるので危険です。
ファイルを入れたいディレクトリに変更します。
テープをテープドライブに挿入します。
cpio コマンドを使用して、すべてのファイルをテープから現在のディレクトリにコピーします。
$ cpio -icvd < /dev/rmt/n |
-i |
テープの内容を読み込む。 |
-c |
ファイルを ASCII 文字形式で読み込むように指定する。 |
-v |
取り出されたファイルを ls コマンドと同様の形式で表示する。 |
-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 コマンドと同様の形式で表示する。 |
"*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 |
テープアーカイブを作成し、テープデバイスを指定する。 |
- (ハイフン) |
可変部としてテープデバイスの代わりに指定する。 |
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 6+9 records in 0+1 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 ファイルを複数のフォーマット済みフロッピーディスクにコピーする手順は単純ではありません。
両面高密度 3.5 インチフロッピーディスクを使用してください (フロッピーディスクには「DS、HD」マークが付いています)。
tar に -c オプションを指定してファイルをフォーマット済みフロッピーディスクにコピーすると、フロッピーディスク上の既存のファイルは破壊 (上書き) される。
すでに tar イメージが入っているフロッピーディスクはマウントできない。
コピーしたいファイルが入っているディレクトリに移動します。
書き込み保護されていないフォーマット済みフロッピーディスクをドライブに挿入します。
volcheck コマンドを使用してフロッピーディスクを使用できるようにします。
$ 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 を実行してフロッピーディスクを使用できるようにします。
$ volcheck |
tar コマンドを使用してフロッピーディスク上のファイルのリストを表示します。
$ tar tvf /vol/dev/rdiskette0/unlabeled |
次の例では、フロッピーディスクの上のファイルを表示します。
$ 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 を実行してフロッピーディスクを使用できるようにします。
$ 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 evalutation.doc x evaluation.doc, 44032 bytes, 86 tape blocks $ ls -l |
指定した名前のファイルがフロッピーディスクから取り出され、現在の作業ディレクトリに格納されます。
大量のファイルやファイルシステムをフロッピーディスクにコピーする場合は、一杯になったフロッピーディスクを別のフォーマット済みフロッピーディスクと交換するように促すプロンプトを表示させることができます。cpio コマンドにはこの機能があります。使用する cpio コマンドはファイルをテープにコピーする場合と同じですが、テープデバイス名ではなくデバイスとして /vol/dev/aliases/floppy0 を指定します。cpio の使用方法については、「ディレクトリ内のすべてのファイルをテープにコピーする方法 (cpio)」を参照してください。
SunOS 5.7 の 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.0/4.1 の bar コマンドを使用してアーカイブしたファイルをフロッピーディスクから取り出すには、cpio の -H bar オプションを使用します。
ファイルを取り出すには、-H bar オプションと -i をいっしょに使用しなければなりません。bar ヘッダーオプションを使用してファイルを作成することはできません。
ファイルを置きたいディレクトリに移動します。
フロッピーディスクをドライブに挿入します。
volcheck を実行して、フロッピーディスクを使用できるようにします。
$ volcheck |
cpio コマンドを使用してフロッピーディスクから bar ファイルを取り出します。
フロッピーディスク上のすべてのファイルが現在のディレクトリにコピーされます。
$ cpio -ivH bar < /vol/dev/rdiskette/unlabeled |
この章では、テープドライブを管理する方法について説明します。
この章で説明する手順は次のとおりです。
通常は、次の媒体を使用して Solaris システムのバックアップを作成します。
1/2 インチのリールテープ
1/4 インチのストリームカートリッジテープ
8 mm のカートリッジテープ
4 mm のカートリッジテープ (DAT)
フロッピーディスクを使用してバックアップを実行することもできますが、時間がかかり煩雑です。
どの媒体を選択するかは、媒体をサポートする機器とファイルの格納に使用する媒体 (通常はテープ) の可用性によって決まります。バックアップはローカルシステムから実行しなければなりませんが、ファイルはリモートデバイスに書き込めます。
表 38-1 に、ファイルシステムの典型的なバックアップ媒体と、その記憶容量を示します。
表 38-1 媒体の記憶容量
媒体 | |
---|---|
1/2 インチ リールテープ |
140 Mbytes (6250 bpi) |
2.5G バイト 1/4 インチ カートリッジ (QIC) テープ |
2.5G バイト |
DDS3 4-mm カートリッジ テープ (DAT) |
12 〜 24G バイト |
14-Gbyte 8-mm カートリッジ テープ |
14G バイト |
DLTTM 7000 1/2 インチ カートリッジ テープ |
35 〜 70G バイト |
バックアップに使用するテープまたはフロッピーディスクドライブに論理デバイス名を与えて指定します。この名前は、「raw」のデバイスファイルが入っているサブディレクトリを指し、ドライブの論理デバイス番号が含まれています。テープドライブの命名規則では、物理デバイス名ではなく論理デバイス名を使用します。表 38-2 は、この命名方式を示しています。
表 38-2 バックアップデバイスの基本的なデバイス名
デバイスの種類 |
名前 |
---|---|
テープ |
/dev/rmt/n |
フロッピーディスク |
/vol/dev/rdiskette0/unlabeled |
通常は、図 38-1 のようにテープドライブデバイスを指定します。
密度を指定しないと、テープドライブは通常それがサポートする一番高い密度で書き込みます。ほとんどの SCSI ドライブはテープ上の密度やフォーマットを自動的に検出し、それに従って読み取りを実行します。ドライブでサポートされる密度を調べるには、/dev/rmt サブディレクトリを見てください。このディレクトリには、各テープで異なる出力密度をサポートするためのテープデバイスファイルのセットが含まれています。
また、SCSI コントローラは最大 7 台の SCSI テープドライブを持つことができます。
通常は、テープドライブを 0 から n までの論理デバイス番号で指定します。表 38-3 は、デフォルトの密度設定を使用してテープデバイス名を指定する方法を示しています。
表 38-3 テープドライブのデフォルト密度指定
指定するドライブ |
使用する番号 |
---|---|
第 1 のドライブ、巻き戻し |
/dev/rmt/0 |
第 1 のドライブ、巻き戻しなし |
/dev/rmt/0n |
第 2 のドライブ、巻き戻し |
/dev/rmt/1m |
第 2 のドライブ、巻き戻しなし |
/dev/rmt/1n |
デフォルトでは、ドライブはその「推奨」密度で書き込みますが、これは一般にそのドライブでサポートされる最大密度です。テープデバイスを指定しなければ、コマンドはデバイスでサポートされるデフォルト密度でドライブ番号 0 に書き込みます。
テープを特定の密度しかサポートされないテープドライブが付いたシステムに転送するには、目的の密度で書き込むデバイス名を指定します。表 38-4 は、テープドライブに別の密度を指定する方法を示しています。
表 38-4 テープドライブに別の密度を指定する
指定 |
番号 |
---|---|
第 1 のドライブ、巻き戻し、低密度 |
/dev/rmt/0l |
第 1 のドライブ、巻き戻しなし、低密度 |
/dev/rmt/0ln |
第 2 のドライブ、巻き戻し、中密度 |
/dev/rmt/1m |
第 2 のドライブ、巻き戻しなし、中密度 |
/dev/rmt/1mn |
デバイス名と密度文字については、図 38-1 を参照してください。
mt コマンドの status オプションを使用すると、テープドライブに関する状態情報を表示できます。 mt コマンドは、/kernel/drv/st.conf ファイルに記述されているすべてのテープドライブの情報を表示します。
情報を表示したいドライブにテープをロードします。
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 |
次の方法を使用すると、システムを手早くポーリングしてすべてのテープドライブを検査できます。
$ 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 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 本目)、サイト特有の情報を入力します。テープは、磁気を発生させる機器から離れた埃のない安全な場所に保管してください。サイトによっては、アーカイブしたテープを遠隔地の防火キャビネットに保管しています。
各ジョブ (バックアップ) がどの媒体 (テープボリューム) に格納されているかということと、各バックアップファイルがどこに保管されているかを記録したログを作成し、管理する必要があります。