名称
cp ― ファイルおよびディレクトリ サブツリーのコピー
構文
cp [-f|-i]
[-p] [-S] [-e extarg ] file1 new_file
cp [-f|-i]
[-p] [-S] [-e extarg ] file1 [file2 ...] dest_directory
cp [-f|-i]
[-p] [-S] [-R|-r]
[-e extarg ] directory1 [directory2 ...] dest_directory
説明
cp は次のようなコピーを行います。
file1 を新規または既存のファイル new_file にコピーする。
file1 を既存の dest_directory にコピーする。
file1、 file2、 ... を既存の dest_directory にコピーする。
ディレクトリのサブツリー directory1 を新規または既存のディレクトリ dest_directory にコピーする。
複数のディレクトリ サブツリー directory1、 directory2、 ... を新規または既存のディレクトリ dest_directory にコピーする。
file1 と new_file に同じファイルを指定すると、 cp は異常終了します
(シェルのメタキャラクタを使用するときは注意してください)。 宛先がディレクトリの場合、
1つ以上のファイルがそのディレクトリにコピーされます。 複数のファイルをコピーする場合は、
宛先にディレクトリを指定しなければなりません。 1つのファイルを新規ファイルにコピーするときに、 new_file が既存の場合は、その内容が破壊されます。
宛先ディレクトリ dest_directory 、または既存の宛先ファイル new_file で書き込みが禁止されている場合、 cp は打ち切られ、エラーメッセージ
``cannot create file'' が出力されます。
1つ以上のディレクトリ サブツリーを別のディレクトリにコピーする場合は、 -r オプションが必要になります。 -r オプションは、
あるファイルを別のファイルにコピーする場合、 または複数のファイルをディレクトリにコピーする場合には無視されます。
new_file が既存のファイルに対するリンクになっており、 その既存ファイルにさらに別のリンクが含まれている場合、 cp により既存ファイルはオーバライトされますが、
設定されたリンクはすべてそのまま保持されます。 あるファイルを既存のファイルにコピーする場合、 cp により、既存ファイルのアクセス
パーミッションビット、 所有者、またはグループが変更されることはありません。
ディレクトリまたはまだ存在していない新規ファイルに ファイルをコピーする場合、 cp は file1 と同じファイル パーミッションビットを持つファイルを新たに作成します。
その際、 file1 -p オプションが指定されていなければユーザーの作成マスクで修正し、その後
S_IRWXU との論理和を取ります。 新規ファイルの所有者とグループはユーザーの所有者とグループになります。 new_file の最終修正時刻 (new_file が存在しない場合は最後のアクセス時刻) およびソースファイル file1 の最終アクセス時刻は、コピーの実行時刻にセットされます。
オプション
- -i
(対話型のコピー) cp は標準エラー出力にプロンプトを送り、
ユーザーによる応答を確認してから、 既存ファイルへのオーバライトを行います。
標準入力から肯定応答があると、 コピー操作が許可されている限り、
ファイルがコピーされます。 -i (対話型のコピー)
と -f (強制コピー) の両オプションを指定すると、 -i オプションは無視されます。
- -f
確認のプロンプトを出さずに、 強制的に既存の宛先パス名を削除してから、
コピーを開始します。 このオプションを使用した場合、 コピー操作で新たに作成されるファイルの名前と
ディレクトリの存在位置が既存ファイルのものと同じであると、 既存のファイルはすべて破壊される
(あるいは置き換えられる) ことになります。
- -p
(パーミッションの保持) コピー操作の間に、 cp はパーミッションで許可されている限り、
修正時刻、アクセス時刻、ファイルモード、ユーザー ID 、およびグループ
ID を保持するようになります。
- -r
(サブツリーの再帰的コピー) cp は各ソースディレクトリを出発点とするサブツリーを dest_directory にコピーします。 dest_directory が既存の場合は、この指定がディレクトリでなければなりません。
この場合、 cp は dest_directory 中に file1 と同じ名前のディレクトリを作成し、 file1 を出発点とするサブツリーを dest_directory/file1 にコピーします。 dest_directory/file1 が既存の場合、エラーになります。 また、 dest_directory が存在していない場合は、 cp により
これが作成され、 file1 を出発点とするサブツリーが dest_directory にコピーされます。 cp -r では、サブツリーはマージされません。
一般には、通常のファイルおよびディレクトリがコピーされます。 キャラクター型特殊デバイス、ブロック型特殊デバイス、ネットワーク特殊ファイル、
名前付きパイプ、シンボリックリンク、およびソケットがコピーされるのは、
ユーザーにファイルに対するアクセス権がある場合です。 それ以外の場合は、
ファイルのコピーができないことを示す警告が表示され、 そのファイルは抜かされます。
dest_directory が directory1 の中に存在したり、また directory1 が循環ディレクトリ構造になっていたりしてはなりません。
いずれの場合も、 cp によりデータが無限にコピーされるからです。
UNIX95 フラグが設定されている場合、複数のファイルを存在しないディレクトリに
コピーしようとすると、 cp はエラーで終了します。
- -R
(サブツリーの再帰的コピー) -R オプションは -r オプションと等価です。
-R および -r オプションを指定すると、 cp は、通常のファイルおよびディレクトリに加えて、
FIFO、キャラクタ型およびブロック型デバイスファイル、 およびシンボリックリンクもコピーします。
デバイスファイルをコピーできるのはスーパーユーザーだけです。 その他のユーザーはエラーを受け取ります。
シンボリックリンクについては、 ターゲットがソースと同じ位置を指すように、コピーが行われます。
警告: デバイス特殊ファイルのあるディレクトリツリーをコピーするときは、 -r オプションを使用してください。
そうでないと、デバイス特殊ファイルからデータが無限に読み取られ、
そのデータが宛先ディレクトリ中に特殊ファイルとして重複してコピーされるので、
ファイルシステムスペースを大きく占有します。
- -e extarg
コピーするファイルのエクステント属性の処理方法を指定します。 extarg には、以下の値のいずれか1つを指定します。
- warn
エクステント属性がコピーできず、ファイルのみコピーした場合に、
警告メッセージを発行します。
- ignore
エクステント属性をコピーしません。
- force
エクステント属性がコピーできない場合、ファイルのコピーを取り止めます。
エクステント属性がコピーできないのは、 エクステント属性をサポートしていないファイルシステムに
ファイルをコピーしようとした場合、またはファイルシステムの ブロックサイズが元のと異なる場合です。 -e が指定されない場合、 extarg のデフォルト値は warn です。
- -S
セーフモードを指定します。 O_DSYNC フラグを設定して対象ファイルをオープンし、システム性能への cp の影響を最小限に抑えます。
コピーする総サイズ (個々のファイルのサイズではない) が、 システムのバッファーキャッシュのサイズの大部分を占めるような場合に 推奨 されます。 このオプションを指定すると、コピーの所要時間が長くなります。
アクセス制御リスト
(ACL)
new_file が新規ファイルの場合、または dest_directory 中にファイルを新たに作成する場合は、もとの file1、 file2 などのアクセス制御リストを継承して、 両ファイルに見られる所有権の違いを反映するように変更されます (acl(5) 参照)。
多言語化対応
環境変数
UNIX95 このコマンドが
XPG4 標準準拠の動作を行うことを指定します。
LC_CTYPE により、テキストをシングルバイト、
またはマルチバイトのいずれの文字で解釈するかを決定します。
LANG および LC_CTYPE により、y (肯定応答/否定応答の確認)
に対応する母国語を決定します。
LANG により、メッセージの表示に使用する言語を決定します。
環境に LC_CTYPE を指定していない場合、または空の文字列にセットされている場合は、
未指定の変数、または空の変数に対するデフォルトとして、 LANG の値が使用されます。
また、 LANG を指定していない場合、または空の文字列にセットされている場合は、 LANG の代わりに "C" (lang(5) 参照) がデフォルトとして使用されます。 インターナショナル変数に無効な値がセットされていると、 cp はインターナショナル変数がすべて
"C" にセットされているものとして動作します。 environ(5) を参照してください。
サポートされるコードセット
シングル/マルチバイトの文字コードセットがサポートされています。
例
以下のコマンドでは、ディレクトリ sourcedir とその内容がファイルシステム中の別の位置 (targetdir) にコピーされます。 cp は新たにディレクトリが作成するので、宛先ディレクトリ targetdir が既存であってはいけません。
cp -r sourcedir targetdir && rm -rf sourcedir
-r オプションでは、ディレクトリ sourcedir 下にあるサブツリー (ファイルとサブディレクトリ) がディレクトリ targetdir にコピーされます。 アンパサンドを2つ続ける (&&)
ことにより、条件付きで動作を実行させることができます。 && の左辺が正しく実行されれば、
右辺が実行されます (古いディレクトリが削除されます)。 一方、 && の左辺が異常終了の場合は、古いディレクトリは削除されません。
この例は、次のコマンドと等価になります。
現在のディレクトリにあるファイルとディレクトリ サブツリーをすべて、
既存ディレクトリ targetdir にコピーする場合は、次のコマンドを使用します。
sourcedir にあるファイルとディレクトリ サブツリーをすべて targetdir にコピーする場合は、次のコマンドを使用します。
cp -r sourcedir/* targetdir
sourcedir と targetdir の前に、ディレクトリのパス名を置くこともできます。
長さゼロのファイルを作成する場合は、次のいずれかを使用します。
cat /dev/null >file
cp /dev/null file
touch file
制約
NFS
ネットワーク上に分散したファイルのアクセス制御リストはまとめられます
(stat() によって st_mode の中に戻されます)
が新たなファイルとしてコピーされることはありません。 この種のファイルに mv または ln 使用すると、
ファイルのオーバライトに関するパーミッションを確認してきた時点で、
モード値の後に + 文字はプリントされなくなります。
著者
cp は AT&T、カリフォルニア大学バークレー校、
および HPで開発されました。
参照
cpio(1), ln(1), mv(1), rm(1), link(1M), lstat(2), readlink(2),
stat(2), symlink(2), symlink(4), acl(5)
標準準拠
cp: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2