テープドライブに対するデータの読み取りや書き込みに使用されるユーティリティーは数多くあります。この節では、Solaris 操作環境に付属していて、よく使われるテープユーティリティーをいくつか紹介します。その他のテープまたはバックアップユーティリティーを使用している場合は、その製品に付属しているマニュアルを参照してください。
この節で説明するテープ操作コマンドは、以下のとおりです。
この後に出てくる「ブロック化因数 (blocking factor)」とは、各コマンドがテープドライブに送るデータ量を意味しています。使用の際には、設定可能な範囲で最も大きな値を指定するのが最良です。詳細についてはマニュアルページの st の項目を参照してください。 データの読み出しに使用するブロック化因数は、データの書き込みに使用するブロック化因数と同じかそれより大きい値に設定しておく必要があります。「設定可能な範囲で最も大きな値を指定するのが最良」と述べた理由は、ここにあります。 ブロック化因数のデフォルト値は 20 となっていますが、パフォーマンスを最適化するにはこの値を 126 に変更してください。 ブロック化因数の値は、テープユーティリティーコマンドのコマンドラインオプションの形式で指定します。
cpio コマンドは、標準入力からファイル名を受け取り、それらのファイルを標準出力に書き出すことによって別のデバイスにファイルをコピーします。cpio は汎用コマンドですが、標準入力と標準出力を入出力先を変更する必要があります。cpioは、複数のボリューム (テープカートリッジ) を必要とするデータを扱うときに使用します。
例 1:
次の例は、/work という作業用ディレクトリと、そのサブディレクトリにあるすべてのファイルを、デバイスアドレス (またはデバイス名) が /dev/rmt/0 であるテープドライブにコピーする方法を示しています。
example# cd /work example# ls -R | cpio -ocB > /dev/rmt/0
例 2:
次の例は、テープ上にあるファイルをハードディスクにコピーする方法を示しています。
example# cd /work example# cpio -icdB < /dev/rmt/0
o オプションは、標準入力を読み取ってパス名の一覧を取得し、それぞれのファイルを標準出力にコピーします。
i オプションは、標準入力からファイルを抽出します。
c オプションは、ヘッダー情報を ASCII フォーマットで書き込むことを指示します。
d オプションは、必要な数のディレクトリを作成することを指示します。
B オプションは、テープドライブとの間でファイルまたはファイルシステムをコピーするときに、使用する必要があるオプションです。このオプションは、入力レコードのブロック化因数が 5120 バイトであることを指示します。
テープからハードディスクにファイルを取り出す (つまりコピーする) ときには、ハードディスクからテープにファイルをコピーしたときと同じブロック化因数を使用する必要があります。したがって、B オプションを指定する必要があります。
このコマンドは、データ形式の異なるファイルを変換してコピーします。多くの場合は、ファイルシステムまたはパーティションをハードディスクからテープに転送するために使用されます。また、あるハードディスクから別のハードディスクにファイルをコピーするときにも使用できます。ブロックサイズの変更が可能なデバイスを使用する場合は、ファイルをハードディスクからテープに、またはテープからハードディスクにコピーするときに必ず同じブロックサイズを使用する必要があります。
次の例は、/dev/dsk/c0t0d0s7 というファイルシステム (またはパーティション) の内容を、デバイスアドレス (またはデバイス名) が /dev/rmt/0 である 4mm テープドライブに書き込む方法を示しています。ブロック化因数は 63k です。
example# dd if=/dev/dsk/c0t0d0s7 of=/dev/rmt/0 bs=63k
ufsdump コマンドは、ハードディスクにあるファイルシステムをテープにコピーします。ufsdump は、特にバックアップ用に設計されたユーティリティーです。複数ボリュームと増分バックアップに対応しています。増分ダンプレベルとスケジュールについての詳細は、『Solaris のシステム管理 (第 1 巻)』を参照してください。
ufsdump コマンドは、単一のファイルシステム (パーティション) に対してだけ有効です。したがって、すべてのファイルが 1 つのファイルシステム (パーティション) に含まれている必要があります。また、ユーパーユーザーである必要があります。
例:
次の例は、ディスクドライブのパーティション /dev/rdsk/c0t3d0s0 に配置されているすべてのファイルを、圧縮モードで、/dev/rmt/1 という1つのファイル (一般にダンプファイルと呼ばれます) にコピーする方法を説明しています。
example# ufsdump 0ubf 126 /dev/rmt/1 /dev/rdsk/c0t1d0s0
0 オプションは、ダンプレベルを表します。レベル 0 ダンプは、ファイルシステム全体をダンプファイル (テープドライブ) にコピーします。0 から 9 までの整数を指定でき、そのうち 1 から 9 は、特定の日時から変更のあったファイルだけをコピーする増分ダンプのレベルを表します。
b オプションは、ファイルをテープにコピーする際に使用するブロック化因数を指定します。b に続けて、使用するブロック化因数を表す数字 (この例では 96) を指定します。デフォルトのブロック化因数は、使用するテープドライブの種類によって異なります。適切なブロック化因数が判断できない場合は、指定せずに、使用テープドライブに合ったデフォルト値が使用されるようにしてください。
u オプションは、正常にコピーされたファイルシステムごとに、ファイル /etc/dumpdates にタイムスタンプ付きのエントリを追加して、ダンプレコードを更新します。
f オプションは、ダンプファイル (テープドライブの論理デバイス名) を指定します。 f に続けてファイル名を指定する必要があります。この例では /dev/rmt/1 です。
/dev/rdsk/c0t1d0s2 は、テープにコピーするファイルが含まれているソースデバイスの名前です。この例では、2 台目のディスクドライブ (t1) の 1 つ目のパーティション ( s0)にあるすべてのファイルがコピーされます。
ufsrestore コマンドは、ファイルシステムをテープからハードディスクにコピーします。このコマンドでコピーできるのは、以前に ufsdump コマンドでハードディスクからテープにコピーしたファイルシステムだけです。
ufsrestore コマンドには、次の 3 つのオプションのうちの 1 つを必ず指定します。
i (対話) - 媒体からディレクトリ情報を読み取った後、ufsrestore は、ダンプファイルのディレクトリ階層構造を表示する対話形式のインタフェースを呼び出します。このインタフェースから、抽出するファイルを個々に選択することができます。
r (再帰) - 媒体の全内容を現在のディレクトリ (通常は、ファイルシステムの最上位のディレクトリ) に復元します。ファイルシステムを完全に復元するには、このオプションを使用してレベル 0 ダンプを復元し、すべての増分ダンプを復元してください。このオプションは何もないファイルシステムへの完全な復元を目的としています。ただし、媒体に存在しないファイルがファイルシステムに含まれている場合、それらのファイルは残されます。
t (目次) - テープ上のすべてのファイルの一覧を表示します。
以下のオプションは省略可能です。
b (ブロック化因数) - テープを読み取る際のブロック化因数を指定します。b に続けて、使用するブロック化因数を表す整数を指定します。省略された場合、ufsrestore コマンドは、適切なブロック化因数を自動的に決定しようとします。
f (ダンプファイル) - 復元するデータが含まれているダンプファイルを指定します。省略された場合は、デフォルトで/dev/rmt/0 が使用されます。
v (詳細モード) - テープからの読み取りながら、パス名を表示します。
例:
次の例は、対話形式でテープからファイルを取り出す方法を示しています。ファイルは、現在のディレクトリ (この例では /disk2) に書き込まれます。ブロック化因数として 96、ダンプファイルとして /dev/rmt/0 (1 台目のテープドライブ) を指定しています。
テープからハードディスクにファイルを取り出す (つまりコピーする) ときには、ハードディスクからテープにファイルをコピーしたときと同じ (またはそれ以上の) ブロック化因数を使用する必要があります。
example# cd /disk2 example# ufsrestore ibf 126 /dev/rmt/0 ufsrestore > ? Available commands are: ls [arg] - list directory cd arg - change directory pwd - print current directory add [arg] - add `arg' to list of files to be extracted delete [arg] - delete `arg' from list of files to be extracted extract - extract requested files setmodes - set modes of requested directories quit - immediately exit program what - list dump header information verbose - toggle verbose flag (useful with "ls") help or `?' - print this list IF no `arg' is supplied, the current directory is used
システムは、ufsrestore プロンプトを表示します。疑問符 (?) を入力すると、使用することができる引数の一覧が以下のように表示されます。
ここで ls と入力すると、テープ上にあるディレクトリを表示することができます。
ufsrestore > ls 4lib/ dict mail openwin spool 5bin games man/ preserve src adm include/ net pub tmp
ここで、add コマンドを使用して、抽出するファイルの一覧にファイルまたはディレクトリを追加します。
ufsrestore > add man mail
この例では、テープから抽出するファイルの一覧に man と mail というファイルを追加しています。
テープからこれらのファイルを抽出してみましょう。抽出したファイルは、現在の作業用ディレクトリに書き込まれます (この例では /disk2)。
ufsrestore > extract
目的のファイルの抽出を終了したら、q と入力して、ufsrestore コマンドを終了します。
ufsrestore > q
tar コマンドは、複数のファイルをまとめて tar ファイルという 1 つのファイルに保管したり、tar ファイルからファイルを抽出したりします。tar で複数のボリューム (テープ) を扱うことはできないため、保管するデータが複数のテープを必要とする場合は、別のテープ操作コマンドを使用してください。
例 1:
次の例は、ハードディスクからテープにファイルをコピーする方法を示しています。
example# tar cvbf 126 /dev/rmt/1 ./ディレクトリ
この例の tar コマンドは、指定されたディレクトリから、デバイス名 が /dev/rmt/1 のテープドライブにファイルをコピーします。ソースディレクトリ名の前に ./ が指定されているため、ファイル名は相対パス名で記録されます。後でこれらのファイルを抽出した場合、現在の作業用ディレクトリを基準にファイルシステムに書き戻されます。
c オプションは、tar ファイルを作成します (この例ではテープに作成される)。
v オプションは、コピーする各ファイルの情報を表示します (詳細モード)。
b オプションは、ブロック化因数を指定します (この例では 96)。
f オプションは、ソースドライブのデバイス名を指定します (この例ではテープドライブ) 。
例 2:
次の例は、テープからハードディスクの現在の作業用ディレクトリにファイルをコピーする方法を説明しています。tar を実行する前に、抽出されるファイルを格納するディレクトリに切り替えておいてください。
example# cd /tmp example# tar xvbf 126 /dev/rmt/1
x オプションは、tar ファイル (テープ) からファイルを抽出します。
v オプションは、コピーする各ファイルの情報を表示します (詳細モード)。
b オプションは、ブロック化因数を指定します。例ではこの因数を 126 (63k) としています。
f オプションは、ターゲットドライブのダンプファイルを指定します。
テープからハードディスクにファイルを取り出す (つまりコピーする) ときは、ハードディスクからテープにファイルをコピーしたときと同じ (またはそれ以上の) ブロック化因数を使用する必要があります。