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