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