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

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