Solaris のシステム管理

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

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

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

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

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

    .

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

    -print

    ファイル名を出力する。 

    -depth

    ディレクトリ階層を下位へたどってバックアップ中にファイル名を出力する。 

    -p

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

    -d

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

    -m

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

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

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

  4. 該当する場合は、ソースディレクトリを削除します。

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

        # cd filesystem2
        # ls
    

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

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

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