この章では、各種のバックアップコマンドを使用して、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 ヘッダーオプションを使用してファイルを作成することはできません。