cp コマンド
目的
ファイルをコピーします。
構文
ファイルを別のファイルにコピーする
cp [ -E{force|ignore|warn} ] [ -f ]
[ -h ] [ -i ] [ -p ] [ -I ] [ -U ] [ - ] SourceFile TargetFile
ファイルをディレクトリーにコピーする
cp [ -E{force|ignore|warn} ] [ -f ]
[ -h ] [ -i ] [ -p ] [[ -r | -R ]
[ -H | -L | -P ]]
[ -I ] [ -U ] [ - ] SourceFile ... TargetDirectory
ディレクトリーをディレクトリーにコピーする
cp [ -E{force|ignore|warn} ] [ -f ]
[ -h ] [ -i ] [ -p ] { -r | -R } [ -H | -L | -P ] [ -I ] [ -U ] [ - ] SourceDirectory ... TargetDirectory
説明
cp コマンドは、
SourceFile パラメーターで指定したソース・ファイルを TargetFile パラメーターで指定した宛先ファイルにコピーします。ターゲット・ファイルがある場合、
cp は内容を上書きしますが、
そのファイルに関連付けられたモード、オーナー、およびグループは変更されません。
SourceFile の最後のアクセス時刻および TargetFile の最後の修正時刻は、
コピーが完了した時刻に設定されます。
TargetFile が存在しない場合、
cp は TargetFile という名前の新規ファイルを作成します。このファイルのモードはソース・ファイルと同じですが、
スーパーユーザーが設定しなければスティッキー・ビットは設定されません。
TargetFile のオーナーとグループは、ユーザーのオーナーとグループになります。
TargetFile が別のファイルへのリンクである場合、
cp は宛先リンクをソース・ファイルの内容で上書きします。
TargetFile からのリンクはそのまま残ります。また、cp コマンドを使用すると、SourceFile パラメーターで指定したソース・ファイル (または SourceDirectory パラメーターで指定したディレクトリー) を、TargetDirectory パラメーターで指定したディレクトリーにコピーすることができます。
注:
ソース・パラメーターの 1 つのディレクトリーがあれば、-r フラグまたは -R フラグのどちらか一方を指定する必要があります。
コピー処理中に cp コマンドによってディレクトリーが作成されると、新しく作成されたディレクトリーのモードは、それに対応するソース・ディレクトリーと同じになります。
特殊デバイス・ファイルもコピーできます。このコピーを実行するには、-R フラグがオプションとして適しています。-R フラグを指定することにより、特殊ファイルが新しいパス名で再作成されます。-r フラグを指定した場合、cp コマンドはスペシャル・ファイルを正規ファイルにコピーしようとします。
フラグ
|
-E |
-E オプションには次の引数のいずれかが必要です。-E オプションを省略すると、warn がデフォルト時の
動作になります。
- force
- ファイルの固定エクステント・サイズまたはスペースの予約を保存できない場合、そのファイル上の cp 操作は失敗します。
- ignore
- エクステント属性の保存中、エラーを無視します。
- warn
- ファイルのスペースの予約または固定エクステント・サイズを保存できない場合に、警告を出します。
|
|
-f |
ターゲット・ファイルが書き込み操作のためにオープンできなければ、
そのファイルを除去するように指定します。除去は cp コマンドによるすべてのコピー処理よりも前に実行されます。 |
|
-h |
cp コマンドにシンボリック・リンクをコピーさせます。デフォルトでは、シンボリック・リンクに従うので、ファイルはシンボリック・リンクが指す位置にコピーされます。 |
|
-H |
SourceFile
オペランドとして指定した任意のシンボリック・リンクが参照しているファイルのタイプと内容に基づいてアクションをとります。 |
|
-i |
上書きするファイル名を入力するようプロンプトを表示します。これは TargetDirectory または TargetFile パラメーターに SourceFile または SourceDirectory パラメーターで指定したファイルと同じファイル名がある場合です。y かロケールで y と同等のものを入力すると、cp コマンドは上書きを続けます。それ以外の応答を入力すると、cp コマンドはファイルの上書きをしません。 |
|
-I |
ACL 変換中に警告メッセージを抑制します。 |
|
-L |
SourceFile
オペランドとして指定した任意のシンボリック・リンク、またはファイル階層の横断中に検出された任意のシンボリック・リンクが参照しているファイルのタイプと内容に基づいてアクションをとります。 |
|
-p |
以下の示すような SourceFile/SourceDirectory の特性を TargetFile または TargetDirectory、あるいはその両方に複写します。
- データを最後に修正した時刻およびそのデータに最後にアクセスした時刻。何らかの理由でこの複写に失敗すると、cp コマンドは、標準エラーに診断メッセージを書き込む場合があります。
- ユーザー ID およびグループ ID。何らかの理由でこの複写に失敗すると、cp コマンドは標準エラーに診断メッセージを書き込む場合があります。
- ファイル許可ビット、S_ISUID ビット、S_ISGID ビット。何らかの理由でこの複写に失敗すると、cp コマンドは、標準エラーに診断メッセージを書き込む場合があります。
ユーザー ID またはグループ ID の複写に失敗した場合は、
ファイル許可ビット S_ISUID および S_ISGID がクリアされます。
オーナー ID、グループ ID、許可モード、修正およびアクセスした時刻を保存するためには、
ユーザーは該当するファイル・アクセス許可を持っている必要があります (スーパーユーザーであるか、宛先ファイルと同じオーナー ID を持っている必要があります)。
これらの特性を保存できなかった場合は、ターゲ
ット・ファイルは削除されません。
SourceFile に関連したアクセス制御リスト (ACL) が保存されるのは、ターゲット・
ファイルシステムで同じものがサポートされる場合です。ソース・ファイルに NFS4 ACL が入っていて、ターゲット・ファイルシステムでは NFS4 ACL をサポートしない
場合は、NFS4 ACL は AIXC に変換されます。
ACL 変換が正常に行われると、stderr に警告メッセージが出力されます。 |
|
-P |
SourceFile
オペランドとして指定した任意のシンボリック・リンク、またはファイル階層の横断中に検出された任意のシンボリック・リンクについてアクションをとります。 |
|
-r |
SourceFile または SourceDirectory パラメーターで指定したファイルまたはディレクトリー下の階層をコピーします (再帰的コピー)。-r フラグを指定すると、正規ファイルと同じ方法でスペシャル・ファイルが処理されます。 |
|
-R |
正規ファイルとディレクトリーの下のファイル階層を、SourceFile パラメーターまたは SourceDirectory パラメーターで指定したディレクトリーから、TargetDirectory パラメーターで指定したディレクトリーへコピーします。先入れ先出し (FIFO) ファイル、ブロック、およびキャラクター・デバイス・ファイルなどの特殊ファイル・タイプは、コピーされる代わりに再作成されます。 -h フラグを指定しないと、シンボリック・リンクに従います。(-R フラグは -r フラグより優先されます。)
-H、-L、または -P
オプションのいずれも指定されていなければ、デフォルトでこれらのオプションのどれを使用するかが指定されていません。以下の点を考慮してください。
- -H オプションを指定すると、cp
コマンドは SourceFile オペランドとして指定した任意のシンボリック・リンクが参照しているファイルのタイプと内容に基づいてアクションをとります。
- -L オプションを指定すると、cp
コマンドは SourceFile オペランドとして指定した任意のシンボリック・リンク、またはファイル階層の横断中に検出された任意のシンボリック・リンクが参照しているファイルのタイプと内容に基づいてアクションをとります。
- -P オプションを指定すると、cp
コマンドは SourceFile
オペランドとして指定した任意のシンボリック・リンクおよびファイル階層の横断中に検出された任意のシンボリック・リンクをコピーしますが、どのシンボリック・リンクにも従いません。
|
|
-U |
SourceFile 内の拡張属性 (EA)、アクセス
制御リスト (ACL) を TargetFile にコピーします。EA がターゲット・ファイルシステムでサポートされていない場合は、無視
されます。ソース ACL タイプがターゲット・ファイルシステムでサポートされていない
場合は、ターゲット・ファイルシステムでサポートされている互換 ACL に変換されます。 |
|
-- |
-- (ダッシュ、ダッシュ) フラグの後に続くパラメーターは、ファイル名として解釈されることを示します。この null フラグを使うと、- (負符号) で始まるファイル名を指定できます。 |
終了状況
このコマンドは次の終了値を戻します。
|
0 |
すべてのファイルが正常にコピーされました。 |
|
>0 |
エラーが発生しました。 |
例
- 現行ディレクトリー内でファイルを別のファイルにコピーするには、以下のように入力します。
cp prog.c prog.bak
ここでは、prog.c を prog.bak にコピーします。ファイル prog.bak がまだ存在していなければ、cp コマンドが作成します。このファイルがすでに存在していれば、cp コマンドは prog.c ファイルのコピーに置換します。
- 現行ディレクトリーのファイルを別のディレクトリーにコピーするには、
以下のように入力します。
cp jones /home/nick/clients
ここでは、jones ファイルを /home/nick/clients/jones にコピーします。
- ファイルを新しいファイルにコピーし、修正日時およびソース・ファイルに関連付けられたアクセス制御リストを保存するには、
以下のように入力します。
ここでは、smith ファイルを smith.jr ファイルにコピーします。システムは現在の日付とタイム・スタンプでファイルを作成する代わりに、smith.jr ファイルに smith ファイルと同じ日付と時刻を与えます。smith.jr ファイルは、smith ファイルのアクセス制御保護も継承します。
- 任意のディレクトリー内のすべてのファイルを新しいディレクトリーにコピーするには、
以下のように入力します。
cp /home/janet/clients/* /home/nick/customers
ここでは、clients ディレクトリー内のファイルだけを customers ディレクトリーにコピーします。
- ディレクトリーを、そのファイルおよびサブディレクトリーを含めて別のディレクトリーにコピーするには、以下のように入力します。
cp -R /home/nick/clients /home/nick/customers
注:
ディレクトリーをそれ自身にはコピーできません。
ここでは、clients ディレクトリーを、その中のファイル、サブディレクトリー、およびサブディレクトリー内のファイルも含めて、customers/clients ディレクトリーにコピーします。
- 特定のファイルセットを別のディレクトリーにコピーするには、以下のように入力します。
cp jones lewis smith /home/nick/clients
ここでは、ユーザーの現在の作業ディレクトリーの中の jones、lewis、および smith ファイルを /home/nick/clients ディレクトリーにコピーします。
- パターン・マッチング文字を使ってファイルをコピーするには、以下のように入力します。
cp programs/*.c .
ここでは、programs ディレクトリー内の .c で終わるファイルを、単一の . (ドット) で表される現行ディレクトリーにコピーします。c と最後のドットの間にはスペースを 1 つタイプしなければなりません。
- ファイルを新しいファイルにコピーし、ソース・ファイルに関連した ACL および EA を保存する場合は、次のように入力します。
cp -U smith smith.jr
ファイル
- /usr/bin/cp
- cp コマンドが入っています。
関連情報
mv コマンド。