Solaris のシステム管理 (第 1 巻)

第 46 章 UFS ファイルとファイルシステムのコピー (手順)

この章では、各種のバックアップコマンドを使用して、UFS ファイルとファイルシステムをディスク、テープ、フロッピーディスクにコピーする方法について説明します。

この章で説明する手順は次のとおりです。

ファイルシステムをコピーするためのコマンド

ファイルシステム全体をバックアップして復元したいときは、第 45 章「ufsdump コマンドと ufsrestore コマンド (参照情報)」で説明した ufsdump コマンドと ufsrestore コマンドを使用します。個々のファイル、ファイルシステムの一部、またはファイルシステム全体をコピーまたは移動したいときは、ufsdumpufsrestore の代わりに、この章で説明する手順を使用できます。

表 46-1 に、各種バックアップコマンドの用途を示します。

表 46-1 バックアップコマンドの用途

目的 

使用するコマンド 

参照ページ 

ファイルシステムをテープにバックアップする 

ufsdump(1M)

「テープにバックアップをとる方法」

ファイルシステムをテープから復元する 

ufsrestore(1M)

「ファイルシステム全体を復元する方法」

ファイルを他のシステムに転送する 

pax(1), tar(1), cpio(1)

「ファイルとファイルシステムをテープにコピーする」

ファイルまたはファイルシステムをディスクにコピーする 

dd(1M)

「ディスクをクローン化する方法 (dd)」

ファイルをフロッピーディスクにコピーする 

tar(1)

「ファイルを 1 枚のフォーマット済みフロッピーディスクにコピーする方法 (tar)」

表 46-2 に、各種のバックアップコマンドと復元コマンドを示します。

表 46-2 バックアップコマンドの概要

コマンド名 

ファイルシステム境界の認識 

複数ボリュームバックアップのサポート 

物理コピー / 論理コピー 

volcopy

する 

する 

物理 

tar

しない 

しない 

論理 

cpio

しない 

する 

論理 

pax

する 

する 

論理 

dd

する 

しない 

物理 

ufsdump/ufsrestore

する 

する 

論理 

次の節では、各方法の長所と短所を説明し、コマンドの使用例を示します。

ファイルシステムをディスクにコピーする

ファイルシステムをディスクにコピーするには、次の 2 つのコマンドを使用します。

次の節では、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

ディスクをクローン化する方法 (dd)

  1. コピー元とコピー先のディスクが同じディスクジオメトリを持っているかどうかを確認します。

  2. スーパーユーザーになります。

  3. /reconfigure ファイルをシステムに作成します。これによって、システムは追加されるクローンディスクをリブート時に認識します。


    # touch /reconfigure
    
  4. システムをシャットダウンします。


    # init 0
    
  5. クローンディスクをシステムに接続します。

  6. システムをブートします。


    ok boot
    
  7. 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 バイトなど)。ブロックサイズの値を大きくすると、コピーに要する時間を短縮できる。 

  8. 新しいファイルシステムをチェックします。


    # fsck /dev/rdsk/device-name
    
  9. クローンディスクのルート (/) ファイルシステムをマウントします。


    # mount /dev/dsk/device-name /mnt
    
  10. クローンディスクの /etc/vfstab を編集して、正しいデバイス名を参照するようにします。

    たとえば、c0t3d0 をすべて c0t1d0 に変更します。

  11. クローンディスクのルート (/) ファイルシステムをマウント解除します。


    # umount /mnt
    
  12. システムを停止します。


    # init 0
    
  13. クローンディスクからシングルユーザーモードにブートします。


    # boot diskn -s
    

    注 -

    installboot コマンドをクローンディスクで実行する必要ありません。これは、ブートブロックがオーバーラップスライスの一部としてコピーされるためです。


  14. クローンディスクの構成を解除します。


    # sys-unconfig
    

    構成を解除すると、システムが停止します。

  15. 再びクローンディスクからブートし、ホスト名や時間帯などのシステム情報を与えます。


    # boot diskn
    
  16. スーパーユーザーとしてログインして、一度システムがブートした後のシステム情報を確認します。


    hostname console login:

例 - ディスクのクローン化 (dd)


# 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 コマンドを使用してファイルシステム全体をコピーする方法について説明します。

cpio コマンドは、ファイルのリストを取り出して 1 つの大型出力ファイルにコピーするアーカイブプログラムです。また、復元しやすいように、個々のファイルの間にヘッダーを挿入します。cpio コマンドを使用すると、ファイルシステム全体を別のスライス、別のシステム、またはテープやフロッピーディスクなどの媒体デバイスにコピーできます。

cpio コマンドは、媒体の終りを認識し、別のボリュームを挿入するように促すプロンプトを表示するので、複数のテープやフロッピーディスクが必要なアーカイブを作成するには最も (ufsdump よりも) 効率のよいコマンドです。

cpio の使用時には、しばしば lsfind などのコマンドを使用してコピーしたいファイルを選択し、その出力を cpio コマンドにパイプします。

ファイルシステム間でディレクトリをコピーする方法 (cpio)

  1. スーパーユーザーになります。

  2. 目的のディレクトリに移動します。


    # cd /filesystem1
    
  3. find コマンドと cpio コマンドを組み合わせて実行し、ディレクトリツリーを filesystem1 から filesystem2 へコピーします。


    # find . -print -depth | cpio -pdmu /filesystem2
    

    .

    現在の作業ディレクトリで処理を始める。 

    -print

    ファイル名を出力する。 

    -depth

    ディレクトリ階層を下降してバックアップ中にファイル名を出力する。 

    -p

    ファイルのリストを作成する。 

    -d

    必要に応じてディレクトリを作成する。 

    -m

    ディレクトリ上で正しい変更時刻を設定する。 

    指定したディレクトリ名からファイルがコピーされます。シンボリックリンクは保持されます。

    また、-u オプションも指定できます。このオプションは、無条件にコピーを実行します。-u オプションを指定しないと、古いファイルが、新しいファイルで置換されません。このオプションは、ディレクトリごとコピーしたいときに、コピーするファイルの一部がすでにターゲットのディレクトリ中に存在する場合に便利です。

  4. コピー先ディレクトリの内容を表示して、コピーに成功したかどうかを確認します。


    # cd /filesystem2
    # ls
    
  5. ソースディレクトリが不要な場合は削除します。


    # rm -rf /filesystem1
    

例 - ファイルシステム間でディレクトリをコピーする (cpio)


# cd /data1
# find .-print -depth | cpio -pdm /data2
19013 blocks
# cd /data2
# ls
# rm -rf /data1

詳細は、cpio(1) のマニュアルページを参照してください。

ファイルとファイルシステムをテープにコピーする

paxtarcpio コマンドを使用すると、ファイルとファイルシステムをテープにコピーできます。どのコマンドを選択するかは、コピーする目的に応じて異なります。3 つのコマンドはすべて raw デバイスを使用するので、使用する前にテープ上でファイルシステムをフォーマットまたは作成する必要はありません。

表 46-3 cpiopaxtar コマンドの長所と短所

コマンド 

機能 

長所 

短所 

pax

POSIX 準拠システムとの間でファイルをコピーする場合、または複数のテープボリュームが必要となる、ファイル、特殊ファイル、またはファイルシステムのコピー 

  • POSIX 準拠システムに対する可搬性は、tar コマンドや cpio コマンドよりもよい。

  • マルチベンダーサポート

tar コマンドの欠点を参照。ただし、pax は、複数のテープボリュームを作成できる。

tar

1 本のテープへの、ファイルやディレクトリのサブツリーのコピー 

  • ほとんどの UNIX オペレーティングシステムで利用できる。

  • パブリックドメインバージョンもすぐに利用できる。

  • ファイルシステムの境界を認識しない。

  • 絶対パス名の長さが 255 文字を超えることができない。

  • 空のディレクトリや特殊ファイル (デバイスファイルなど) をコピーしない。

  • 複数のテープボリュームを作成する場合は使用できない。

cpio

SunOS 5.8 システムから SunOS 4.0/4.1 システムにファイルをコピーする場合、または複数のテープボリュームが必要となる、ファイル、特殊ファイル、またはファイルシステムのコピー 

  • tar よりも効率的に、データをテープに書き込む。

  • 復元時、テープ中の不良箇所をスキップする。

  • 異なるシステムタイプ間の可搬性のために、異なるヘッダーフォーマット (tarustarcrcodcbar) でファイルを書き込むオプションを提供する。

  • 複数のテープボリュームを作成する。

 

使用するテープドライブとデバイス名は、各システムのハードウェアと構成によって異なります。テープドライブとデバイス名についての詳細は、「使用する媒体の選択」を参照してください。

tar を使用してファイルをテープにコピーする

tar コマンドでファイルをテープにコピーする前に、次のことを知っておかなければなりません。

ファイルをテープにコピーする方法 (tar)

  1. コピーしたいファイルが入っているディレクトリに変更します。

  2. 書き込み可能なテープをテープドライブに挿入します。

  3. tar コマンドを使用してファイルをテープにコピーします。


    $ tar cvf /dev/rmt/n filename  ...

    c

    アーカイブが作成されるように指定する。 

    v

    アーカイブされるたびに、各ファイルの名前を表示する。 

    f /dev/rmt/n

    アーカイブを指定したデバイスまたはファイルに書き込むように指定する。 

    filename ...

    コピーしたいファイルとディレクトリを指定する。 

    指定した名前のファイルがテープにコピーされ、テープ上の既存のファイルが上書きされます。

  4. テープをドライブから取り出して、テープラベルにファイル名を記入します。

  5. テープの内容を表示する t オプションを指定し、tar コマンドを使用して、コピーされたファイルがテープに入っているかどうかを確認します。tar テープ上のファイルを表示する方法についての詳細は、「テープ上のファイルのリストを表示する方法 (tar)」を参照してください。


    $ tar tvf /dev/rmt/n
    

例 - ファイルをテープにコピーする (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)

  1. テープをテープドライブに挿入します。

  2. tar コマンドを使用してテープの内容を表示します。


    $ tar tvf /dev/rmt/n [filename]

    t

    テープ上のファイルの内容一覧が表示される。 

    v

    t オプションといっしょに使用すると、テープ上のファイルに関する詳細情報が表示される。

    f /dev/rmt/n

    テープデバイスを示す。 

    filename ...

    リスト表示したいファイルとディレクトリを指定する。 

例 - テープ上のファイルのリストを表示する (tar)

次の例では、ドライブ 0 のテープに含まれているファイルのリストを表示します。


$ tar tvf /dev/rmt/0
drwx--x--x   0/1        0 Jul 14 09:24 1999 reports/
-rw------t   0/1    30000 Jul 14 09:23 1999 reports/reportA
-rw------t   0/1    31000 Jul 14 09:24 1999 reports/reportB
-rw------t   0/1    32000 Jul 14 09:24 1999 reports/reportC

テープからファイルを取り出す方法 (tar)

  1. ファイルを置きたいディレクトリに移動します。

  2. テープをテープドライブに挿入します。

  3. tar コマンドを使用してテープからファイルを取り出します。


    $ tar xvf /dev/rmt/n [filename ...]

    x

    指定したアーカイブファイルからファイルを抽出するように指定する。指定したドライブのテープに含まれるすべてのファイルが現在のディレクトリにコピーされる。 

    v

    各ファイルがアーカイブされるたびに、その名前を表示する。 

    f /dev/rmt/n

    アーカイブが入っているテープデバイスを示す。 

    filename

    取り出すファイルを指定する。 

  4. 現在のディレクトリの内容をリストして、ファイルがコピーされていることを確認します。


    $ ls -l 
    

例 - テープ上のファイルを取り出す (tar)

次の例では、ドライブ 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)

  1. コピーしたいファイルが入っているディレクトリに移動します。

  2. 書き込み可能なテープをテープドライブに挿入します。

  3. pax コマンドを使用してファイルをテープにコピーします。


    $ pax -w -f /dev/rmt/0 filename ...

    -w

    書き込みモードを有効にする。 

    -f /dev/rmt/0

    テープドライブを識別する。 

    filename ...

    コピーしたいファイルとディレクトリを指定する。 

  4. ファイルがテープにコピーされていることを確認します。


    $ pax -l -f /dev/rmt/0
    
  5. ドライブからテープを取り出して、テープラベルにファイル名を記入します。

例 - ファイルをテープにコピーする (pax)


$ pax -w -f /dev/rmt/0 .
$ pax -f /dev/rmt/0
filea
fileb
filec

詳細は、pax(1) のマニュアルページを参照してください。

ディレクトリ内のすべてのファイルをテープにコピーする方法 (cpio)

  1. 書き込み保護されていないテープをテープドライブに挿入します。

  2. ls コマンドと cpio コマンドを使用してファイルをテープにコピーします。


    $ ls | cpio -oc > /dev/rmt/n
    

    ls

    cpio コマンドにファイル名のリストを渡す。

    cpio -oc

    cpio がコピーアウトモード (-o) で動作し、ASCII 文字形式 (-c) でヘッダー情報を書き込むように指定する。これによって他のベンダーのシステムとの可搬性を保つ。

    > /dev/rmt/n

    出力ファイルを指定する。 

    ディレクトリ内のすべてのファイルは、指定したドライブ内のテープにコピーされ、テープ上の既存のファイルが上書きされます。コピーされた合計ブロック数が表示されます。

  3. ファイルがテープにコピーされていることを確認します。


    $ cpio -civt < /dev/rmt/0
    
  4. テープをドライブから取り出して、テープラベルにファイル名を記入します。

例 - ディレクトリ内のすべてのファイルをテープにコピーする (cpio)

次の例では、ディレクトリ /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 1999, b
drwx--x--x    2 kryten     users          0 Jul 14 09:26 1999, letters
-rw------t    1 kryten     users      10000 Jul 14 09:26 1999, letter1
-rw------t    1 kryten     users      10100 Jul 14 09:26 1999, letter2
-rw------t    1 kryten     users      11100 Jul 14 09:27 1999, letter3
-rw------t    1 kryten     users      12300 Jul 14 09:27 1999, letter4
drwx--x--x    2 kryten     users          0 Jul 14 09:27 1999, memos
-rw------t    1 kryten     users        400 Jul 14 09:28 1999, memosmemoU
-rw------t    1 kryten     users        500 Jul 14 09:28 1999, memosmemoW
-rw------t    1 kryten     users        100 Jul 14 09:27 1999, memosmemoX
-rw------t    1 kryten     users        200 Jul 14 09:28 1999, memosmemoY
-rw------t    1 kryten     users        150 Jul 14 09:28 1999, memosmemoZ
drwx--x--x    2 kryten     users          0 Jul 14 09:24 1999, reports
92 blocks
$

テープ上のファイルのリストを表示する方法 (cpio)


注 -

内容一覧を表示するには、cpio コマンドがアーカイブ全体を読み取るので、そのために要するのと同じ時間がかかります。


  1. テープをテープドライブに挿入します。

  2. cpio コマンドを使用してテープ上のファイルのリストを表示します。


    $ cpio -civt < /dev/rmt/n
    

    -c

    ファイルを ASCII 文字形式で読み込むように指定する。 

    -i

    cpio がコピーインモードで動作することを指定する (この時点ではファイルをリストするだけ)。

    -v

    ls -l コマンドと同様の形式で出力を表示する。

    -t

    指定したテープドライブ内のテープ上にあるファイルの内容一覧が表示される。 

    < /dev/rmt/n

    既存の cpio アーカイブの入力ファイルを指定する。

例 - テープ上のファイルのリストを表示する (cpio)

次の例では、ドライブ 0 のテープに含まれているファイルのリストを表示します


$ cpio -civt < /dev/rmt/0
drwx--x--x    2 kryten    users        0 Jul 14 09:34 1999, answers
-rw------t    1 kryten    users      800 Jul 14 09:36 1999, b
drwx--x--x    2 kryten    users        0 Jul 14 09:32 1999, sc.directives
-rw------t    1 kryten    users   200000 Jul 14 09:35 1999, direct241
drwx--x--x    2 kryten    users        0 Jul 14 09:32 1999, tests
-rw------t    1 kryten    users      800 Jul 14 09:36 1999, test13times
396 blocks

テープからすべてのファイルを取り出す方法 (cpio)

相対パス名を使用してアーカイブを作成した場合、入力ファイルはそれを取り出すときに現在のディレクトリ内のディレクトリとして作成されます。ただし、絶対パス名を指定してアーカイブを作成した場合は、それと同じ絶対パス名を使用してシステム上でファイルが再び作成されます。


注意 - 注意 -

絶対パス名を使用すると、自分のシステム上にある元のファイルを上書きすることになるので危険です。


  1. ファイルを入れたいディレクトリに変更します。

  2. テープをテープドライブに挿入します。

  3. cpio コマンドを使用して、すべてのファイルをテープから現在のディレクトリにコピーします。


    $ cpio -icvd < /dev/rmt/n
    

    -i

    テープの内容を読み込む。 

    -c

    ファイルを ASCII 文字形式で読み込むように指定する。 

    -v

    取り出されたファイルを ls コマンドと同様の形式で表示する。

    -d

    必要に応じて、ディレクトリを作成する。 

    < /dev/rmt/n

    入力ファイルを指定する。 

  4. 現在のディレクトリの内容を表示して、ファイルがコピーされていることを確認します。


    $ ls -l
    

例 - テープからすべてのファイルを取り出す (cpio)

次の例では、ドライブ 0 のテープからすべてのファイルを取り出します。


$ cd /var/tmp
$ cpio -icvd < /dev/rmt/0
answers
sc.directives
tests
8 blocks
$ ls -l

テープから特定のファイルを取り出す方法 (cpio)

  1. ファイルを置きたいディレクトリに移動します。

  2. テープをテープドライブに挿入します。

  3. cpio コマンドを使用してテープからファイルのサブセットを取り出します。


    $ cpio -icv "*file" < /dev/rmt/n
    

    -i

    テープの内容を読み込む。 

    -c

    ファイルを ASCII 文字形式で読み込むように指定する。 

    -v

    取り出されたファイルを ls コマンドと同様の形式で表示する。

    "*file"

    パターンに一致するすべてのファイルを現在のディレクトリにコピーするように指定する。複数のパターンを指定できるが、個々のパターンを二重引用符で囲まなければならない。 

    < /dev/rmt/n

    入力ファイルを指定する。 

  4. 現在のディレクトリの内容を表示して、ファイルがコピーされていることを確認します。


    $ ls -l
    

例 - 指定したファイルをテープから取り出す (cpio)

次の例では、末尾に接尾辞 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) のマニュアルページを参照してください。

ファイルをリモートテープドライブにコピーする方法 (tardd)

  1. リモートテープドライブを使用するには、次の前提条件を満たしている必要があります。

    • ローカルホスト名 (および、オプションで、コピーしているユーザーのユーザー名) が、リモートシステムの /etc/hosts.equiv ファイル内になければならない。あるいは、コピーしているユーザーは、リモートマシン上の自分のホームディレクトリをアクセス可能にしておかなければならない。さらに、$HOME/.rhosts 内にローカルマシン名がなければならない。詳細は、hosts.equiv(4) を参照。

    • リモートシステムのエントリがローカルシステムの /etc/inet/hosts ファイル内またはネームサービスの hosts ファイル内になければならない。

  2. リモートコマンドを実行するための適切なアクセス権を持っているかどうかをテストするには、次のように入力します。


    $ rsh remotehost echo test
    

    「test」と表示された場合、リモートコマンドを実行するためのアクセス権を持っています。「Permission denied」と表示された場合、上記の手順 1 の内容を確認してください。

  3. 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

    ブロック係数を指定する。 

  4. テープをドライブから取り出して、テープラベルにファイル名を記入します。

例 - ファイルをリモートテープドライブにコピーする (tardd)


# 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

ファイルをリモートテープドライブから取り出す方法

  1. 一時ディレクトリに変更します。


    $ cd /var/tmp
    
  2. tar コマンドと dd コマンドを使用して、ファイルをリモートのテープドライブに抽出します。


    $ rsh remotehost dd if=/dev/rmt/n | tar xvBpf -
    

    rsh remotehost

    dd コマンドを使用してテープデバイスからファイルを取り出すために起動されるリモートシェル。

    dd if=/dev/rmt/n

    入力デバイスを指定する。 

    | tar xvBpf -

    dd コマンドの出力は tar コマンドにパイプされ、復元されたファイルに使用される。

  3. ファイルが抽出されたかどうかを確認します。


    $ 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

ファイルとファイルシステムをフロッピーディスクにコピーする

ファイルやファイルシステムをフロッピーディスクにコピーする前に、フロッピーディスクをフォーマットしなければなりません。フロッピーディスクをフォーマットする方法については、第 16 章「コマンド行でのフロッピーディスクのフォーマットと使用方法 (手順)」を参照してください。

tar コマンドを使用して、UFS ファイルを 1 枚のフォーマット済みフロッピーディスクにコピーします。

UFS ファイルを複数のフォーマット済みフロッピーディスクにコピーする必要があれば、cpio コマンドを使用します。cpio は媒体の終りを認識し、次のボリュームの挿入を促すプロンプトを表示します。


注 -

ボリューム管理の関係で、cpio コマンドを使用して UFS ファイルを複数のフォーマット済みフロッピーディスクにコピーする手順は単純ではありません。


両面高密度 3.5 インチフロッピーディスク (フロッピーディスクには「DS、HD」マークが付いています) を使用してください。

ファイルをフロッピーディスクにコピーする際の注意事項

ファイルを 1 枚のフォーマット済みフロッピーディスクにコピーする方法 (tar)

  1. コピーしたいファイルが入っているディレクトリに移動します。

  2. 書き込み保護されていないフォーマット済みフロッピーディスクをドライブに挿入します。

  3. volcheck コマンドを使用してフロッピーディスクを使用できるようにします。


    $ volcheck
    
  4. フロッピーディスク上のファイルシステムをすべてマウント解除し、再度フォーマットします。


    $ fdformat -U /vol/dev/aliases/floppy0
    
  5. tar コマンドを使用してファイルをフロッピーディスクにコピーします。


    $ tar cvf /vol/dev/rdiskette0/unlabeled filename ...

    指定した名前のファイルがフロッピーディスクにコピーされ、フロッピーディスク上の既存のファイルが上書きされます。

  6. フロッピーディスクの内容を表示する -t オプションをつけて tar コマンドを使用し、コピーしたファイルがフロッピーディスクに入っているかどうかを検査します。ファイルのリストを表示する方法についての詳細は、「フロッピーディスク上のファイルのリストを表示する方法 (tar)」を参照してください。


    $ tar tvf /vol/dev/rdiskette0/unlabeled 
    
  7. フロッピーディスクをドライブから取り出します。

  8. ファイル名をフロッピーディスクラベルに記入します。

例 - ファイルを 1 枚のフォーマット済みフロッピーディスクにコピーする (tar)

次の例では、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

フロッピーディスク上のファイルのリストを表示する方法 (tar)

  1. フロッピーディスクをドライブに挿入します。

  2. volcheck を実行してフロッピーディスクを使用できるようにします。


    $ volcheck
    
  3. tar コマンドを使用してフロッピーディスク上のファイルのリストを表示します。


    $ tar tvf /vol/dev/rdiskette0/unlabeled
    

例 - フロッピーディスク上のファイルのリストを表示する (tar)

次の例では、フロッピーディスクの上のファイルを表示します。


$ 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 つのボリュームに対して使用できるユーティリティです。

ファイルをフロッピーディスクから取り出す方法 (tar)

  1. ファイルを置きたいディレクトリに移動します。

  2. フロッピーディスクをドライブに挿入します。

  3. volcheck を実行してフロッピーディスクを使用できるようにします。


    $ volcheck
    
  4. tar コマンドを使用してファイルをフロッピーディスクから取り出します。


    $ tar xvf /vol/dev/rdiskette0/unlabeled
    

    フロッピーディスク上のすべてのファイルが現在のディレクトリにコピーされます。

  5. 現在のディレクトリの内容を表示して、ファイルが取り出されたことを確認します。


    $ ls -l
    
  6. フロッピーディスクをドライブから取り出します。

例 - ファイルをフロッピーディスクから取り出す (tar)

次の例では、フロッピーディスクからすべてのファイルを取り出します。


$ /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.8 の cpio コマンドを使用して作成したアーカイブには、SunOS の旧リリースとの互換性がない場合があります。cpio コマンドを使用すると、他の複数の形式で読み込めるアーカイブを作成できます。これらの形式は、-H オプションと次のいずれかの引数で指定します。

ヘッダーオプションを使用する場合の構文は次のとおりです。


cpio -o -H header-option < file-list > output-archive

SunOS の旧リリース用のアーカイブを作成する方法

cpio コマンドを使用してアーカイブを作成します。


$ cpio -oH odc < file-list > /dev/rmt/n

-H オプションは、入力に対して出力の場合と同じ意味を持ちます。-H オプションを使用してアーカイブを作成した場合は、読み込むときにも同じオプションを使用しないと、次のように cpio コマンドが失敗に終ります。

例 - SunOS の旧リリース用にアーカイブを作成する


$ 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) のマニュアルページを参照してください。

bar コマンドで作成したファイルを取り出す

SunOS 4.0/4.1 の bar コマンドを使用してアーカイブしたファイルをフロッピーディスクから取り出すには、cpio-H bar オプションを使用します。


注 -

ファイルを取り出すには、-H bar オプションと -i をいっしょに使用しなければなりません。bar ヘッダーオプションを使用してファイルを作成することはできません。


bar ファイルをフロッピーディスクから取り出す方法

  1. ファイルを置きたいディレクトリに移動します。

  2. フロッピーディスクをドライブに挿入します。

  3. volcheck を実行して、フロッピーディスクを使用できるようにします。


    $ volcheck
    
  4. cpio コマンドを使用してフロッピーディスクから bar ファイルを取り出します。

    フロッピーディスク上のすべてのファイルが現在のディレクトリにコピーされます。


    $ cpio -ivH bar < /vol/dev/rdiskette/unlabeled