この章では、各種のバックアップコマンドを使用して、UFS ファイルとファイルシステムをディスク、テープ、フロッピーディスクにコピーする方法について説明します。
この章で説明する手順は次のとおりです。
ファイルシステム全体をバックアップして復元する場合は、第 50 章「UFS バックアップおよび復元コマンド (参照情報)」で説明した ufsdump コマンドと ufsrestore コマンドを使用します。個々のファイル、ファイルシステムの一部、またはファイルシステム全体をコピーまたは移動する場合は、ufsdump と ufsrestore コマンドの代わりに、この章で説明する手順を使用できます。
表 51–1 バックアップコマンドの用途
作業 |
コマンド |
参照先 |
---|---|---|
ファイルシステムをテープにバックアップする |
ufsdump | |
ファイルシステムのスナップショットを作成する |
fssnap | |
ファイルシステムをテープから復元する |
ufsrestore | |
ファイルを他のシステムに転送する |
pax、 tar、または cpio | |
ファイルまたはファイルシステムをディスク間でコピーする |
dd | |
ファイルをフロッピーディスクにコピーする |
tar |
次の表に、各種のバックアップおよび復元コマンドを示します。
表 51–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 if=/dev/rdsk/device-name of=/dev/rdsk/device-name bs=block-size |
if=/dev/rdsk/device-name |
マスターディスクデバイスのオーバーラップスライスを指定する。通常はスライス 2。 |
of=/dev/rdsk/device-name |
クローンディスクデバイスのオーバーラップスライスを指定する。通常はスライス 2。 |
bs= blocksize |
ブロックサイズ (128K バイト、256K バイトなど) を指定できる。ブロックサイズの値を大きくすると、コピーに要する時間を短縮できる。 |
詳細については、dd(1M) のマニュアルページを参照してください。
新しいファイルシステムをチェックします。
# 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: |
次の例では、マスターディスク /dev/rdsk/c0t0d0s2 をクローンディスク /dev/rdsk/c0t2d0s2 にコピーする方法を示します。
# touch /reconfigure # init 0 ok boot # dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/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 -pdm filesystem2 |
. |
現在の作業ディレクトリで処理を始める。 |
|
ファイル名を出力する。 |
-depth |
ディレクトリ階層を下降してバックアップ中にファイル名を出力する。 |
-p |
ファイルのリストを作成する。 |
-d |
必要に応じてディレクトリを作成する。 |
-m |
ディレクトリ上で正しい変更時刻を設定する。 |
詳細については、cpio(1) のマニュアルページを参照してください。
指定したディレクトリ名からファイルがコピーされます。シンボリックリンクは保持されます。
また、-u オプションも指定できます。このオプションは、無条件にコピーを実行します。-u オプションを指定しない場合、古いファイルが、新しいファイルで置換されません。このオプションは、ディレクトリごとコピーしたいときに、コピーするファイルの一部がすでにターゲットのディレクトリ中に存在する場合に便利です。
コピー先ディレクトリの内容を表示して、コピーに成功したかどうかを確認します。
# cd /filesystem2 # ls |
ソースディレクトリが不要な場合は削除します。
# rm -rf /filesystem1 |
# cd /data1 # find . -print -depth | cpio -pdm /data2 19013 blocks # cd /data2 # ls # rm -rf /data1 |
tar、pax、および cpio コマンドを使用すると、ファイルとファイルシステムをテープにコピーできます。どのコマンドを選択するかは、コピーする目的に応じて異なります。3 つのコマンドはすべて raw デバイスを使用するので、使用する前にテープ上でファイルシステムをフォーマットまたは作成する必要はありません。
表 51–3 tar、pax、cpio コマンドの長所と短所
使用するテープドライブとデバイス名は、各システムのハードウェアの構成によって異なります。テープデバイス名の詳細については、使用するメディアの選択 を参照してください。
tar コマンドを使用してファイルをテープにコピーする前に、次のことを知っておかなければなりません。
tar コマンドに -c オプションを指定してファイルをテープにコピーすると、テープに入っているすべての既存のファイルまたはテープの現存の位置以降にある既存のファイルすべてが破壊 (上書き) される。
ファイルをコピーするとき、ファイル名の一部にファイル名置換ワイルドカード文字 (? と *) を使用できる。たとえば、接尾辞 .doc が付いたすべての文書をコピーするには、ファイル名引数として *.doc と入力する。
tar アーカイブからファイルを抽出するときには、ファイル名置換ワイルドカードは使用できない。
コピーするファイルの存在するディレクトリに移動します。
書き込み可能なテープをテープドライブに挿入します。
ファイルをテープにコピーします。
$ tar cvf /dev/rmt/n filenames |
c |
アーカイブの作成を指定する。 |
v |
各ファイルがアーカイブされるたびに、その名前を表示する。 |
f /dev/rmt/n |
アーカイブを指定したデバイスまたはファイルに書き込むように指定する。 |
filenames |
コピーするファイルとディレクトリを指定する。ファイルが複数の場合は、各ファイルをスペースで区切る。 |
指定した名前のファイルがテープにコピーされ、テープ上の既存のファイルが上書きされます。
テープをドライブから取り出して、テープラベルにファイル名を記入します。
コピーしたファイルがテープ上に存在することを確認します。
$ tar tvf /dev/rmt/n |
tar テープ上のファイルを表示する方法については、テープ上のファイルのリストを表示する方法 (tar) を参照してください。
次の例では、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 59 tape blocks a reports/reportB 61 tape blocks a reports/reportC 63 tape blocks $ tar tvf /dev/rmt/n |
テープをテープドライブに挿入します。
$ tar tvf /dev/rmt/n |
t |
テープ上のファイルの内容一覧が表示される。 |
v |
t オプションと一緒に使用すると、テープ上のファイルに関する詳細情報が表示される。 |
f /dev/rmt/n |
テープデバイスを示す。 |
次の例では、ドライブ 0 のテープに含まれるファイルのリストを表示します。
$ tar tvf /dev/rmt/0 drwx--x--x 0/1 0 Jul 14 09:24 2001 reports/ -rw------t 0/1 30000 Jul 14 09:23 2001 reports/reportA -rw------t 0/1 31000 Jul 14 09:24 2001 reports/reportB -rw------t 0/1 32000 Jul 14 09:24 2001 reports/reportC |
ファイルを置きたいディレクトリに移動します。
テープをテープドライブに挿入します。
$ tar xvf /dev/rmt/n [filenames] |
x |
指定したアーカイブファイルからのファイルの抽出を指定する。指定したドライブのテープに含まれるすべてのファイルが現在のディレクトリにコピーされる。 |
v |
各ファイルを取り出すたびに、その名前を表示する。 |
f /dev/rmt/n |
アーカイブを含むテープデバイスを示す。 |
filenames |
取り出すファイルを指定する。ファイルが複数の場合は、各ファイルをスペースで区切る。 |
詳細については、tar(1) のマニュアルページを参照してください。
ファイルがコピーされていることを確認します。
$ 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) を参照してください。
コピーするファイルの存在するディレクトリに移動します。
書き込み可能なテープをテープドライブに挿入します。
ファイルをテープにコピーします。
$ pax -w -f /dev/rmt/0 filenames |
-w |
書き込みモードを有効にする。 |
-f /dev/rmt/0 |
テープドライブを識別する。 |
filenames |
コピーするファイルとディレクトリを指定する。ファイルが複数の場合は、各ファイルをスペースで区切る。 |
詳細については、pax(1) のマニュアルページを参照してください。
ファイルがテープにコピーされていることを確認します。
$ pax -f /dev/rmt/0 |
テープをドライブから取り出して、テープラベルにファイル名を記入します。
次の例は、pax コマンドを使用して、現在のディレクトリ内のファイルをすべてコピーする方法を示します。
$ pax -w -f /dev/rmt/0 . $ pax -f /dev/rmt/0 filea fileb filec |
コピーするファイルの存在するディレクトリに移動します。
書き込み保護をしていないテープをテープドライブに挿入します。
ファイルをテープにコピーします。
$ ls | cpio -oc> /dev/rmt/n |
ls |
cpio コマンドにファイル名のリストを渡す。 |
cpio -oc |
cpio コマンドがコピーアウトモード (-o) で動作し、ASCII 文字形式 (-c) でヘッダー情報を書き込むように指定する。このオプションにより他のベンダーのシステムとの互換性を保つ。 |
> /dev/rmt/n |
出力ファイルを指定する。 |
ディレクトリ内のすべてのファイルは、指定したドライブ内のテープにコピーされ、テープ上の既存のファイルが上書きされます。コピーされた合計ブロック数が表示されます。
ファイルがテープにコピーされていることを確認します。
$ cpio -civt < /dev/rmt/n |
テープをドライブから取り出して、テープラベルにファイル名を記入します。
次の例では、 /export/home/kryten ディレクトリ内のすべてのファイルをテープドライブ 0 のテープにコピーする方法を示します。
$ cd /export/home/kryten $ ls | cpio -oc> /dev/rmt/0 92 blocks $ cpio -civt < /dev/rmt/0 -rw------t 1 kryten users 400 Jul 14 09:28 2001, b drwx--x--x 2 kryten users 0 Jul 14 09:26 2001, letters -rw------t 1 kryten users 10000 Jul 14 09:26 2001, letter1 -rw------t 1 kryten users 10100 Jul 14 09:26 2001, letter2 -rw------t 1 kryten users 11100 Jul 14 09:27 2001, letter3 -rw------t 1 kryten users 12300 Jul 14 09:27 2001, letter4 drwx--x--x 2 kryten users 0 Jul 14 09:27 2001, memos -rw------t 1 kryten users 400 Jul 14 09:28 2001, memosmemoU -rw------t 1 kryten users 500 Jul 14 09:28 2001, memosmemoW -rw------t 1 kryten users 100 Jul 14 09:27 2001, memosmemoX -rw------t 1 kryten users 200 Jul 14 09:28 2001, memosmemoY -rw------t 1 kryten users 150 Jul 14 09:28 2001, memosmemoZ drwx--x--x 2 kryten users 0 Jul 14 09:24 2001, reports 92 blocks $ |
内容一覧を表示するには、cpio コマンドがアーカイブ全体を処理する必要があるため、かなりの時間がかかります。
テープをテープドライブに挿入します。
$ cpio -civt < /dev/rmt/n |
-c |
ファイルを ASCII 文字形式で読み込むように指定する。 |
-i |
cpio がコピーインモードで動作することを指定する。この時点ではファイルをリストするだけ。 |
-v |
ls -l コマンドの出力と同様の形式で出力を表示する。 |
-t |
指定したテープドライブ内のテープ上にあるファイルの内容一覧を表示する。 |
< /dev/rmt/n |
既存の cpio アーカイブの入力ファイルを指定する。 |
次の例では、ドライブ 0 のテープに含まれるファイルのリストを表示します。
$ cpio -civt < /dev/rmt/0 drwx--x--x 2 kryten users 0 Jul 14 09:34 2001, answers -rw------t 1 kryten users 800 Jul 14 09:36 2001, b drwx--x--x 2 kryten users 0 Jul 14 09:32 2001, sc.directives -rw------t 1 kryten users 200000 Jul 14 09:35 2001, direct241 drwx--x--x 2 kryten users 0 Jul 14 09:32 2001, tests -rw------t 1 kryten users 800 Jul 14 09:36 2001, test13times 396 blocks |
相対パス名を使用してアーカイブを作成した場合、入力ファイルはそれを取り出すときに現在のディレクトリ内のディレクトリとして作成されます。ただし、絶対パス名を指定してアーカイブを作成した場合は、それと同じ絶対パス名を使用してシステム上でファイルが再び作成されます。
絶対パス名を使用すると、自分のシステム上にある元のファイルを上書きすることになるので危険です。
ファイルを置きたいディレクトリに移動します。
テープをテープドライブに挿入します。
$ 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 -icv "*file" < /dev/rmt/n |
-i |
標準入力からファイルを取り出す。 |
-c |
ヘッダーを ASCII 文字形式で読み込むように指定する。 |
-v |
取り出されたファイルを ls コマンドの出力と同様の形式で表示する。 |
"* file" |
パターンに一致するすべてのファイルを現在のディレクトリにコピーするように指定する。複数のパターンを指定できるが、個々のパターンを二重引用符で囲まなければならない。 |
< /dev/rmt/n |
入力ファイルを指定する。 |
詳細については、cpio(1) のマニュアルページを参照してください。
ファイルがコピーされていることを確認します。
$ 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 |
リモートテープドライブを使用するには、次の前提条件を満たしている必要があります。
リモートコマンドの実行に必要なアクセス権を保持していることを確認するには、次のように入力します。
$ rsh remotehost echo test |
test と表示された場合、リモートコマンドの実行に必要なアクセス権を保持しています。Permission denied と表示された場合は、手順 1 の内容を確認してください。
ファイルを置きたいディレクトリに移動します。
テープをテープドライブに挿入します。
$ tar cvf - filenames | rsh remote-host dd of=/dev/rmt/n obs=block-size |
tar cf |
テープアーカイブを作成し、アーカイブに含まれるファイルをリスト表示し、テープデバイスを指定する。 |
- (ハイフン) |
可変部としてテープデバイスの代わりに指定する。 |
filenames |
コピーするファイルを指定する。 |
| rsh remote-host |
tar コマンドの出力をパイプを通してリモートシェルに渡す。 |
dd of= /dev/rmt/n |
出力デバイスを指定する。 |
obs= block-size |
ブロック係数を指定する。 |
テープをドライブから取り出して、テープラベルにファイル名を記入します。
# 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 |
$ rsh remote-host dd if=/dev/rmt/n | tar xvBpf - |
rsh remote-host |
dd コマンドを使用してテープデバイスからファイルを取り出すために起動するリモートシェル。 |
dd if=/dev/rmt/n |
入力デバイスを指定する。 |
| tar xvBpf - |
dd コマンドの出力を tar コマンドにパイプして、ファイルを復元する。 |
ファイルが抽出されたことを確認します。
$ ls -l /var/tmp |
$ cd /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 |
ファイルやファイルシステムをフロッピーディスクにコピーする前に、フロッピーディスクをフォーマットする必要があります。フロッピーディスクをフォーマットする方法については、第 19 章「リムーバブルメディアのフォーマット (手順)」を参照してください。
tar コマンドを使用して、UFS ファイルを 1 枚のフォーマット済みフロッピーディスクにコピーします。
UFS ファイルを複数のフォーマット済みフロッピーディスクにコピーする必要があれば、cpio コマンドを使用します。cpio コマンドはメディアの終わりを認識し、次のボリュームの挿入を促すプロンプトを表示します。
ボリューム管理の関係で、cpio コマンドを使用して UFS ファイルを複数のフォーマット済みフロッピーディスクにコピーする手順は単純ではありません。
tar に -c オプションを指定してフォーマット済みフロッピーディスクにファイルをコピーすると、フロッピーディスク上の既存のファイルは破壊 (上書き) される。
tar イメージを格納済みのフロッピーディスクはマウントできない。
複数のボリュームを扱う場合は、cpio コマンドを使用してください。tar コマンドは 1 つのボリュームに対して使用できるユーティリティです。
詳細については、tar(1) のマニュアルページを参照してください。
コピーするファイルの存在するディレクトリに移動します。
書き込み保護されていないフォーマット済みフロッピーディスクをドライブに挿入します。
フロッピーディスクを使用可能な状態にします。
$ volcheck |
必要に応じて、再度フォーマットします。
$ rmformat -U /dev/rdiskette Formatting will erase all the data on disk. Do you want to continue? (y/n)y |
ファイルをフロッピーディスクにコピーします。
$ tar cvf /vol/dev/aliases/floppy0 filename ... |
指定した名前のファイルがフロッピーディスクにコピーされ、フロッピーディスク上の既存のファイルがすべて上書きされます。
ファイルがコピーされていることを確認します。
$ tar tvf /vol/dev/aliases/floppy0 |
ファイルのリストを表示する方法については、フロッピーディスク上のファイルのリストを表示する方法 (tar) を参照してください。
フロッピーディスクをドライブから取り出します。
ファイル名をフロッピーディスクラベルに記入します。
次の例では、2 つのファイルをフロッピーディスクにコピーします。
$ volcheck $ cd /home/smith $ ls evaluation* evaluation.doc evaluation.doc.backup $ tar cvf /vol/dev/aliases/floppy0 evaluation* a evaluation.doc 86 blocks a evaluation.doc.backup 84 blocks $ tar tvf /vol/dev/aliases/floppy0 |
次の例では、フロッピーディスク上のファイルのリストを表示します。
$ volcheck tar tvf /vol/dev/aliases/floppy0 rw-rw-rw-6693/10 44032 Jun 9 15:45 evaluation.doc rw-rw-rw-6693/10 43008 Jun 9 15:55 evaluation.doc.backup $ |
ファイルを置きたいディレクトリに移動します。
フロッピーディスクをドライブに挿入します。
フロッピーディスクを使用可能な状態にします。
$ volcheck |
$ tar xvf /vol/dev/aliases/floppy0 |
フロッピーディスク上のすべてのファイルが現在のディレクトリにコピーされます。
ファイルが取り出されたことを確認します。
$ ls -l |
フロッピーディスクをドライブから取り出します。
次の例では、フロッピーディスクからすべてのファイルを取り出します。
$ volcheck $ cd /home/smith/Evaluations $ tar xvf /vol/dev/aliases/floppy0 x evaluation.doc, 44032 bytes, 86 tape blocks x evaluation.doc.backup, 43008 bytes, 84 tape blocks $ ls -l |
次の例では、フロッピーディスクから個々のファイルを取り出します。
$ volcheck $ tar xvf /vol/dev/aliases/floppy0 evaluation.doc x evaluation.doc, 44032 bytes, 86 tape blocks $ ls -l |
指定した名前のファイルがフロッピーディスクから取り出され、現在の作業ディレクトリに格納されます。
大量のファイルをフロッピーディスクにコピーする場合は、いっぱいになったフロッピーディスクを別のフォーマット済みフロッピーディスクと交換するように促すプロンプトを表示させることができます。cpio コマンドにはこの機能があります。使用する cpio コマンドはファイルをテープにコピーする場合と同じですが、テープデバイス名ではなくデバイスとして /vol/dev/aliases/floppy0 を指定します。
cpio コマンドの使用方法については、ディレクトリ内のすべてのファイルをテープにコピーする方法 (cpio) を参照してください。
SunOS 5.9 の 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 コマンドが失敗します。次の例には、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 ヘッダーオプションを使用してファイルを作成することはできません。