Solaris のシステム管理 (デバイスとファイルシステム)

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

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

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

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

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

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

表 28–1 バックアップコマンドの用途

作業 

コマンド 

参照先 

UFS ファイルシステムをテープにバックアップします。 

ufsdump

「UFS ファイルシステムのバックアップをテープに作成する方法」

ファイルシステムのスナップショットを作成します。 

fssnap

第 25 章UFS スナップショットの使用 (手順)

UFS ファイルシステムをテープから復元します。 

ufsrestore コマンド

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

ファイルをほかのシステムに転送します。 

paxtar、または cpio

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

ファイルまたはファイルシステムをディスク間でコピーします。 

dd

「ディスクをコピーする方法 (dd)」

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

tar

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

次の表に、各種のバックアップおよび復元コマンドを示します。

表 28–2 バックアップコマンドの概要

コマンド名 

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

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

物理コピー / 論理コピー 

volcopy

はい 

はい 

物理 

tar

いいえ 

いいえ 

論理 

cpio

いいえ 

はい 

論理 

pax

はい 

はい 

論理 

dd

はい 

いいえ 

物理 

ufsdump/ufsrestore

はい 

はい 

論理 

fssnap

なし 

なし 

論理 

次の表では、これらのコマンドの一部の長所と短所を説明します。

表 28–3 tarpaxcpio コマンドの長所と短所

コマンド 

機能 

長所 

短所 

tar

ファイルやディレクトリサブツリーを 1 本のテープにコピーする場合に使用します。 

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

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

  • ファイルシステムの境界を認識しません

  • 完全パス名は最大 255 文字です

  • 複数のテープボリュームを作成する場合は使用できません

pax

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

  • POSIX 準拠システムに対する、tar コマンドや cpio コマンドよりも高い互換性

  • 複数のベンダーサポート

tar コマンドの短所を参照してください。ただし、pax は、複数のテープボリュームを作成できます。

cpio

複数のテープボリュームを必要とするファイル、特殊ファイル、またはファイルシステムをコピーする場合に使用します。または、最新の Solaris リリースを実行しているシステムから SunOS 4.0/4.1 リリースを実行しているシステムへファイルをコピーする場合に使用します。 

  • tar コマンドよりも効率的に、データをテープに書き込みます

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

  • 異なるシステムタイプ間の互換性のために、異なるヘッダー形式 (tarustarcrcodcbar など) でファイルを書き込むオプションを提供します

  • 複数のテープボリュームを作成します

コマンド構文が tar コマンドや pax コマンドよりも難解です。

次の節では、これらのコマンドの使用例を紹介します。

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

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

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

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

Procedureディスクをコピーする方法 (dd)

ディスクをコピーする際には次の点に注意してください。

それでもなお、dd コマンドによるディスクコピーを検討する場合は、次の点に注意してください。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. (省略可能) システムがリブート時に必要に応じてコピー先ディスクを認識するように、/reconfigure ファイルを作成します。


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


    # init 0
    
  4. コピー先ディスクをシステムに接続します。

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


    ok boot -s
    
  6. ソースディスクをコピー先ディスクへコピーします。


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

  7. 新しいファイルシステムを検査します。


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


    # mount /dev/dsk/device-name /mnt
    
  9. /etc/vfstab ファイルのあるディレクトリに移動します。


    # cd /mnt/etc
    
  10. テキストエディタを使用して、コピー先ディスクの /etc/vfstab ファイルを編集して、正しいデバイス名を参照するようにします。

    たとえば、c0t3d0 のインスタンスをすべて c0t1d0 に変更します。

  11. コピー先ディスクのルート (/) ディレクトリに移動します。


    # cd /
    
  12. コピー先ディスクのルート (/) ファイルシステムをマウント解除します。


    # umount /mnt
    
  13. システムをシャットダウンします。


    # init 0
    
  14. コピー先ディスクからシングルユーザーモードでブートします。


    # boot diskn -s
    

    注 –

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


  15. コピー先ディスクの構成を解除します。


    # sys-unconfig
    

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

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


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


    hostname console login:

例 28–1 VTOC ラベル付きディスクをコピーする (dd)

次の例では、VTOC ラベル付きのマスターディスク /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
(Modify entries for the new disk)
# cd /
# umount /mnt
# init 0
# boot disk2 -s
# sys-unconfig
# boot disk2


例 28–2 EFI ラベル付きディスクをコピーする (dd)

以前の Solaris リリースでは、ディスク全体がスライス 2 (s2) で表されていました。EFI ラベル付きディスクの場合、複製後のディスクに一意の UUID を割り当てる必要があるため、1T バイトを超えるサイズのディスクを複製 (コピー) する場合、若干異なる方法を使用する必要があります。複製済みディスク用の新しいラベルは、必ず作成してください。作成しないと、その他のソフトウェア製品によって UUID の重複が検出された時点で、EFI ラベル付きディスクのデータが破壊されることがあります。

次に例を示します。

  1. EFI ラベル付きディスクを複製します。次に例を示します。


    # dd if=/dev/rdsk/c0t0d0 of=/dev/rdsk/c0t2d0 bs=128k
    
  2. 複製対象のディスクの prtvtoc 出力を fmthard コマンドにパイプして、複製済みディスク用の新しいラベルを作成します。次に例を示します。


    # prtvtoc /dev/rdsk/c0t0d0 | fmthard -s - /dev/rdsk/c0t2d0
    

EFI ディスクラベルの詳細は、「EFI ディスクラベル」を参照してください。


cpio を使用してファイルシステム間でディレクトリをコピーする

cpio (コピーインとコピーアウト) コマンドを使用して、個々のファイル、ファイルグループ、またはファイルシステム全体をコピーできます。この節では、cpio コマンドを使ってファイルシステム全体をコピーする方法について説明します。

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

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

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

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

  1. スーパーユーザーになるか、同等の役割を引き受けます。

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


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


    # find . -print -depth | cpio -pdm filesystem2
    
    .

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

    -print

    ファイル名を出力します。

    -depth

    ディレクトリ階層を下降し、すべてのファイル名を出力します。

    -p

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

    -d

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

    -m

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

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

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

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

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


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


    # rm -rf filesystem1
    

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


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

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

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

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

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

tar コマンドを使用してファイルをテープにコピーする前に、次の情報について知っておかなければなりません。

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

  1. コピーするファイルの存在するディレクトリに移動します。

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

  3. ファイルをテープにコピーします。


    $ tar cvf /dev/rmt/n filenames
    
    c

    アーカイブの作成を指定します。

    v

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

    f /dev/rmt/ n

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

    filenames

    コピーするファイルとディレクトリを指定します。ファイルが複数の場合は、各ファイルをスペースで区切ります。

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

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

  5. コピーしたファイルがテープ上に存在することを確認します。


    $ tar tvf /dev/rmt/n
    

    tar テープ上のファイルを表示する方法については、「テープ上のファイルのリストを表示する方法 (tar)」を参照してください。


例 28–4 ファイルをテープにコピーする (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/0

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

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

  2. テープの内容を表示します。


    $ tar tvf /dev/rmt/n
    
    t

    テープ上のファイルのリストが表示されます。

    v

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

    f /dev/rmt/n

    テープデバイスを示します。


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

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


$ tar tvf /dev/rmt/0
drwxr-xr-x   0/0        0 Jul 14 13:50 2010 reports/
-r--r--r--   0/0   206663 Jul 14 13:50 2010 reports/reportC
-r--r--r--   0/0   206663 Jul 14 13:50 2010 reports/reportB
-r--r--r--   0/0   206663 Jul 14 13:50 2010 reports/reportA

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

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

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

  3. テープからファイルを取り出します。


    $ tar xvf /dev/rmt/n [filenames]
    x

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

    v

    各ファイルを取り出すたびに、その名前を表示します。

    f /dev/rmt/ n

    アーカイブを含むテープデバイスを示します。

    filenames

    取り出すファイルを指定します。ファイルが複数の場合は、各ファイルをスペースで区切ります。

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

  4. ファイルがコピーされたことを確認します。


    $ ls -l
    

例 28–6 テープ上のファイルを取り出す (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)」を参照してください。

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

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

  1. コピーするファイルの存在するディレクトリに移動します。

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

  3. ファイルをテープにコピーします。


    $ pax -w -f /dev/rmt/n filenames
    
    -w

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

    -f /dev/rmt/n

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

    filenames

    コピーするファイルとディレクトリを指定します。ファイルが複数の場合は、各ファイルをスペースで区切ります。

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

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


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


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

次の例は、pax コマンドを使用して、現在のディレクトリ内のファイルをすべてコピーする方法を示します。


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

cpio コマンドを使用してファイルをテープにコピーする

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

  1. コピーするファイルの存在するディレクトリに移動します。

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

  3. ファイルをテープにコピーします。


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

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

    cpio -oc

    cpio コマンドがコピーアウトモード (-o) で動作し、ASCII 文字形式 (-c) でヘッダー情報を書き込むように指定します。これらのオプションによりほかのベンダーのシステムとの互換性を保ちます。

    > /dev/rmt/n

    出力ファイルを指定します。

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

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


    $ cpio -civt < /dev/rmt/n
    
    -c

    cpio コマンドがファイルを ASCII 文字形式で読み込むように指定します。

    -i

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

    -v

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

    -t

    指定したテープドライブ内のテープ上にあるファイルの内容リストを表示します。

    < /dev/rmt/n

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

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


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

次の例では、 /export/home/kryten ディレクトリ内のすべてのファイルをテープドライブ 0 のテープにコピーする方法を示します。


$ cd /export/home/kryten
$ ls | cpio -oc > /dev/rmt/0
1280 blocks
$ cpio -civt < /dev/rmt/0
-r--r--r--    1 kryten   staff      206663 Jul 14 13:52 2010, filea
-r--r--r--    1 kryten   staff      206663 Jul 14 13:52 2010, fileb
-r--r--r--    1 kryten   staff      206663 Jul 14 13:52 2010, filec
drwxr-xr-x    2 kryten   staff           0 Jul 14 13:52 2010, letters
drwxr-xr-x    2 kryten   staff           0 Jul 14 13:52 2010, reports
1280 blocks

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


注 –

テープの内容リストを表示するには、cpio コマンドがアーカイブ全体を処理する必要があるため、かなりの時間がかかります。


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

  2. テープ上のファイルのリストを表示します。


    $ cpio -civt < /dev/rmt/n
    

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

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


$ cpio -civt < /dev/rmt/0
-r--r--r--    1 kryten   staff      206663 Jul 14 13:52 2010, filea
-r--r--r--    1 kryten   staff      206663 Jul 14 13:52 2010, fileb
-r--r--r--    1 kryten   staff      206663 Jul 14 13:52 2010, filec
drwxr-xr-x    2 kryten   staff           0 Jul 14 13:52 2010, letters
drwxr-xr-x    2 kryten   staff           0 Jul 14 13:52 2010, reports
1280 blocks

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

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


注意 – 注意 –

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


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

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

  3. テープからすべてのファイルを抽出します。


    $ cpio -icvd < /dev/rmt/n
    
    -i

    標準入力からファイルを取り出します。

    -c

    cpio コマンドがファイルを ASCII 文字形式で読み込むように指定します。

    -v

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

    -d

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

    < /dev/rmt/n

    出力ファイルを指定します。

  4. ファイルがコピーされたことを確認します。


    $ ls -l
    

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

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


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

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

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

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

  3. テープからファイルのサブセットを取り出します。


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

    標準入力からファイルを取り出します。

    -c

    cpio コマンドを使用してヘッダーを ASCII 文字形式で読み込むように指定します。

    -v

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

    "*file "

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

    < /dev/rmt/n

    入力ファイルを指定します。

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

  4. ファイルがコピーされたことを確認します。


    $ ls -l
    

例 28–11 指定したファイルをテープから取り出す (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

ファイルをリモートテープデバイスにコピーする

Procedureファイルをリモートテープデバイスにコピーする方法 (tardd)

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

    1. ローカルホスト名 (および、オプションでコピーを実行するユーザーのユーザー名) が、リモートシステムの /etc/hosts.equiv ファイルに記述されている必要がある。または、コピーを実行するユーザーが、リモートマシン上の自分のホームディレクトリをアクセス可能にし、かつ $HOME/.rhosts 内にローカルマシン名を記述しておく必要がある。

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

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

  2. リモートコマンドの実行に必要なアクセス権を保持していることを確認するには、次のように入力します。


    $ rsh remotehost echo test
    

    test と表示された場合、リモートコマンドの実行に必要なアクセス権を保持しています。Permission denied と表示された場合は、手順 1 の内容を確認してください。

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

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

  5. ファイルをリモートテープドライブへコピーします。


    $ tar cvf - filenames | rsh remote-host dd of=/dev/rmt/n obs=block-size
    
    tar cf

    テープアーカイブを作成し、アーカイブに含まれるファイルをリスト表示し、テープデバイスを指定します。

    v

    tar ファイルのエントリに関する追加情報を表示します。

    - (ハイフン)

    可変部としてテープデバイスの代わりに指定します。

    filenames

    コピーするファイルを指定します。ファイルが複数の場合は、各ファイルをスペースで区切ります。

    rsh | remote-host

    tar コマンドの出力をパイプを通してリモートシェルに渡します。

    dd of= /dev/rmt/n

    出力デバイスを指定します。

    obs=block-size

    ブロック係数を指定します。

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


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


# tar cvf - * | rsh mercury dd of=/dev/rmt/0 obs=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

Procedureファイルをリモートテープデバイスから抽出する方法

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

  2. 一時ディレクトリに移動します。


    $ cd /var/tmp
    
  3. リモートテープデバイスからファイルを抽出します。


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

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

    dd if=/dev/rmt/n

    入力デバイスを指定します。

    | tar xvBpf -

    dd コマンドの出力を tar コマンドにパイプして、ファイルを復元します。

  4. ファイルが抽出されたことを確認します。


    $ ls -l
    

例 28–13 ファイルをリモートのテープドライブから抽出する


$ 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

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

ファイルやファイルシステムをフロッピーディスクにコピーする前に、フロッピーディスクをフォーマットする必要があります。フロッピーディスクをフォーマットする方法については、第 2 章リムーバブルメディアの管理 (手順)を参照してください。

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

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

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

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

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

  1. コピーするファイルの存在するディレクトリに移動します。

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

  3. フロッピーディスクを使用可能な状態にします。


    $ volcheck
    
  4. 必要に応じて、再度フォーマットします。


    $ rmformat -U /dev/rdiskette
    Formatting will erase all the data on disk.
    Do you want to continue? (y/n)y
    
  5. ファイルをフロッピーディスクにコピーします。


    $ tar cvf /vol/dev/aliases/floppy0 filenames
    

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

  6. ファイルがコピーされたことを確認します。


    $ tar tvf /vol/dev/aliases/floppy0
    

    ファイルのリストを表示する方法については、「フロッピーディスク上のファイルのリストを表示する方法 (tar)」を参照してください。

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

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


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

次の例では、evaluation* という名前のファイルをフロッピーディスクにコピーする方法を示します。


$ cd /home/smith
$ volcheck
$ 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

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

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

  2. フロッピーディスクを使用可能な状態にします。


    $ volcheck
    
  3. フロッピーディスク上のファイルのリストを表示します。


    $ tar tvf /vol/dev/aliases/floppy0
    

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

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


$ 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
$

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

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

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

  3. フロッピーディスクを使用可能な状態にします。


    $ volcheck
    
  4. フロッピーディスクからファイルを取り出します。


    $ tar xvf /vol/dev/aliases/floppy0
    

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

  5. ファイルが取り出されたことを確認します。


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


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

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


$ cd /home/smith/Evaluations
$ volcheck
$ 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)」を参照してください。