Go to main content

マニュアルページ セクション 1: ユーザーコマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

cp(1)

名前

cp - ファイルのコピー

形式

/usr/bin/cp [-Pfipz@/] source_file target_file
/usr/bin/cp [-Pfipz@/] source_file... target
/usr/bin/cp -r [-H | -L | -P] [-fipz@/] source_dir... target
/usr/bin/cp -R [-H | -L | -P] [-fipz@/] source_dir... target
/usr/xpg4/bin/cp [-Pfipz@/] source_file target_file
/usr/xpg4/bin/cp [-Pfipz@/] source_file... target
/usr/xpg4/bin/cp -r [-H | -L | -P] [-fipz@/] source_dir... target
/usr/xpg4/bin/cp -R [-H | -L | -P] [-fipz@/] source_dir... target

説明

前述の「形式」の項で示す第 1 の形式では、source_file および target_file はディレクトリファイルではありません。また、両者は同じ名前ではありません。cp ユーティリティーは、source_file が示すファイルの内容を、target_file が示す宛先パスにコピーします。target_file がすでに存在していると、cp はその内容を上書きしますが、ファイルのモード (さらに ACL が有効な場合は ACL)、所有者、およびグループは変更しません。target_file の最新更新時間および source_file の最新アクセス時間の値は、コピーが行われた時間に設定されます。target_file が存在しなければ、cptarget_file という名のファイルを作成します。このファイルのモードは source_file と同じになります。ただしコマンドを発行したユーザーがスーパーユーザーでない限り、スティッキビットは設定されません。この場合、target_file の所有者とグループは (target_file を作成した) ユーザーのものと同じになります。ただし、新たに作成されたファイル (target_file) を含むディレクトリに setgid ビットがセットされている場合を除きます。このディレクトリに setgid ビットがセットされている場合、新たに作成されたファイル (target_file) のグループは、そのファイルを作成したユーザーのグループではなく、そのファイルを含むディレクトリのグループになります。target_file が別のファイルへのリンクである場合、リンク先のファイルに対して source_file の内容を上書きします。target_file からのリンクはそのまま残ります。

第 2 の形式の cp は、source_file が示す 1 つ以上のファイルを、target が示すディレクトリにコピーします。source_file がディレクトリの場合 、target が存在しない場合、および target がディレクトリでない場合は、いずれもエラーとなります。

第 3 または第 4 の形式の cp は、source_dir が示す 1 つ以上のディレクトリを、target が示すディレクトリにコピーします。–r または –R のどちらかを指定しなければなりません。個々の source_dir に関して、cp はその中のすべてのファイルとサブディレクトリをコピーします。

オプション

/usr/bin/cp/usr/xpg4/bin/cp では次のオプションがサポートされています。

–f

リンク解除。宛先ファイルのファイル記述子が得られない場合、宛先ファイルのリンクを解除して処理を続けようとします。

–H

処理は、source_file オペランドとして指定したシンボリックリンクが参照するファイルの種類と内容に基づいて行われます。

source_file オペランドがシンボリックリンクである場合、source_file オペランドのシンボリックリンクが参照するファイルがコピーされます。ファイル階層の検索中に検出された他のすべてのシンボリックリンクは維持されます。

–i

対話型。cp では、コピーが既存の target を上書きする際に、確認を求めます。これは、入力が端末から送られているかどうかに関係なく実行されます。確認のプロンプトでエラーが発生した場合は、ユーザーによる否定応答と同等です。肯定応答を返すと、コピー処理は続行されます。他の応答では、cp による target の上書きは実行されません。

–L

処理は、source_file オペランドとして指定したシンボリックリンク、あるいは、ファイル階層の検索中に出会ったシンボリックリンクが参照するファイルの種類と内容に基づいて行われます。

シンボリックリンクが参照するファイルをコピーします。ファイル階層の検索中に検出されたシンボリックリンクは維持されません。

–p

保持。cp ユーティリティーは、source_file の内容を複製するだけではなく、その ACL、アクセス日時と更新日時、拡張属性、拡張システム属性、ファイルモード、および所有者 ID とグループ ID を保持しようとします。

cp がアクセス日時と更新日時、拡張属性、またはファイルモードを保持できない場合、cp はそれを失敗とは見なしません。cp が所有者 ID とグループ ID を保持できない場合、コピーは失敗しませんが、cp はメッセージを表示せずにターゲットのファイルモードから S_ISUID および S_ISGID ビットをクリアします。cp がこれらのビットをクリアできない場合、コピーは失敗します。cp が ACL または拡張システム属性を保持できない場合、コピーは失敗します。コピーが失敗すると、診断メッセージが stderr に書き込まれ、(残りのオペランドすべての処理後に) cp がゼロ以外の終了ステータスで終了します。

–P

処理は、source_file オペランドとして指定したシンボリックリンク、あるいは、ファイル階層の検索中に出会ったシンボリックリンク自身に行われます。

シンボリックリンクをコピーします。ファイル階層の検索中に検出されたシンボリックリンクが保存されます。

–r

再帰。cp はそのディレクトリ全体、つまりディレクトリ内の全ファイルをコピーするだけでなく、ディレクトリにあるすべてのサブディレクトリとそのサブディレクトリ中の全ファイルも target にコピーします。–H–L、または –P のいずれのオプションも指定しない限り、–L オプションがデフォルトのモードとして使用されます。

–R

パイプが読まれるのではなく複写される、という点を除いて –r と同じです。

–z

高速コピー。cp は、ソースおよび宛先ファイルに対して reflink を実行します。詳細は、reflink(3C) のマニュアルページを参照してください。

–@

拡張属性を保持します。cp は、ファイルのデータとともに、すべてのソースファイルの拡張属性を宛先ファイルにコピーしようとします。

–/

拡張属性と拡張システム属性を保持します。cp ユーティリティーは、ファイルのデータに加え、拡張属性と拡張システム属性を各ソースファイルからコピーし、拡張属性に関連付けられた拡張システム属性を宛先ファイルにコピーしようとします。cp が拡張属性または拡張システム属性をコピーできない場合、診断メッセージが stderr に書き込まれ、(残りのオペランドすべての処理後に) ゼロ以外の終了ステータスで終了します。

–H–L、または –P は相互排他的なオプションですが、これらを複数指定しても、エラーであるとは判断されません。最後に指定したオプションが cp の動作を決定します。

/usr/bin/cp

–p オプションが –@ オプションまたは –/ オプションとともに指定されている場合、/usr/bin/cp の動作は次のようになります。

  • –p–@ の両方が任意の順序で指定されている場合、拡張属性をコピーできないとコピーは失敗します。

  • –p–/ の両方が任意の順序で指定されている場合、拡張システム属性をコピーできないとコピーは失敗します。

/usr/xpg4/bin/cp

–p オプションが –@ オプションまたは –/ オプションとともに指定されている場合、/usr/xpg4/bin/cp の動作は次のようになります。

  • –p–@ の両方が指定されている場合は、最後に指定されたオプションによって、拡張属性を保持できないとコピーが失敗するかどうかが決まります。

  • –p–/ の両方が指定されている場合は、最後に指定されたオプションによって、拡張システム属性を保持できないとコピーが失敗するかどうかが決まります。

オペランド

次のオペランドがサポートされています。

source_file

コピーされる通常ファイルのパス名

source_dir

コピーされるディレクトリのパス名

target_file

1 つのファイルをコピーする際に出力として用いられるファイルのパス名。既存のファイルでも存在していないファイルでもよい

target

コピーしたファイルを出力するディレクトリのパス名

使用例 1 1 つのファイルをコピーする

次の例は、1 つのファイルをコピーします。


example% cp goodies goodies.old

example% ls goodies*
goodies goodies.old
使用例 2 一群のファイルをコピーする

次の例は、一群のファイルを目的のディレクトリにコピーします。


example% cp ~/src/* /tmp
使用例 3 あるディレクトリをコピーする

次の例は、あるディレクトリを、最初は新しいディレクトリにコピーして、次に既存のディレクトリにコピーします。


example% ls ~/bkup
/usr/example/fred/bkup not found

example% cp –r ~/src ~/bkup

example% ls –R ~/bkup
x.c y.c z.sh

example% cp –r ~/src ~/bkup

example% ls –R ~/bkup
src x.c y.c z.sh
src:
x.c y.c z.s
使用例 4 拡張ファイルシステム属性をコピーする

次の例では、拡張ファイルシステム属性をコピーします。

$ ls -/ c file1
-rw-r--r--   1 foo   staff          0 Oct 29 20:04 file1
                {AH-----m--}

$ cp -/ file1 file2
$ ls -/c file2
-rw-r--r--   1 foo  staff          0 Oct 29 20:17 file2
                {AH-----m--}


使用例 5 拡張システム属性のコピーに失敗する

次に、拡張システム属性のコピーに失敗する例を示します。


$ ls -/c file1
-rw-r--r--   1 foo    staff          0 Oct 29 20:04 file1
                {AH-----m--}

$ cp -/ file1 /tmp         
cp: Failed to copy extended system attributes from file1 to /tmp/file1


$ ls -/c /tmp/file1
-rw-r--r--   1 foo    staff          0 Oct 29 20:09 /tmp/file1
                {}

環境変数

cp の実行に影響を与える次の環境変数についての詳細は、environ(7) を参照してください。LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、および NLSPATH。

肯定応答は、ユーザーのロケールの LC_MESSAGES カテゴリの yesexpr キーワードで定義されている拡張正規表現を使用して処理されます。LC_COLLATE カテゴリに指定されているロケールは、yesexpr に定義されている式に使用される範囲、同等クラス、および複数文字照合要素の動作を定義します。LC_CTYPE に指定されているロケールは、テキストデータのバイト列を文字として解釈するロケールや、yesexpr に定義されている式に使用される文字クラスの動作を定義します。locale(7) を参照してください。

終了ステータス

次の終了ステータスが返されます。

0

すべてのファイルを正常にコピーしました。

>0

エラーが発生しました。

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

/usr/bin/cp

属性タイプ
属性値
使用条件
system/core-os
CSI
有効
インタフェースの安定性
確実

/usr/xpg4/bin/cp

属性タイプ
属性値
使用条件
system/xopen/xcu4
CSI
有効
インタフェースの安定性
確実

関連項目

chmod(1), chown(1), utime(2), fgetattr(3C), attributes(7), environ(7), fsattr(7), locale(7), standards(7)

ソースファイルのアクセス権モードは、コピー時にそのまま保存されます。

-- によって、ユーザーはコマンド行オプションの終端を明示的にマーク付けできるので、cp で始まるファイル名引数を認識できるようになります。