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