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 が存在しない場合、 cpTargetFile という名前の新規ファイルを作成します。 このファイルのモードはソース・ファイルと同じですが、 スーパーユーザーが設定しなければスティッキー・ビットは設定されません。 TargetFile のオーナーとグループは、ユーザーのオーナーとグループになります。 TargetFile が別のファイルへのリンクである場合、 cp は宛先リンクをソース・ファイルの内容で上書きします。 TargetFile からのリンクはそのまま残ります。 また、cp コマンドを使用すると、SourceFile パラメーターで指定したソース・ファイル (または SourceDirectory パラメーターで指定したディレクトリー) を、TargetDirectory パラメーターで指定したディレクトリーにコピーすることができます。

注: ソース・パラメーターの 1 つのディレクトリーがあれば、-r フラグまたは -R フラグのどちらか一方を指定する必要があります。

コピー処理中に cp コマンドによってディレクトリーが作成されると、新しく作成されたディレクトリーのモードは、それに対応するソース・ディレクトリーと同じになります。

特殊デバイス・ファイルもコピーできます。このコピーを実行するには、-R フラグがオプションとして適しています。-R フラグを指定することにより、特殊ファイルが新しいパス名で再作成されます。-r フラグを指定した場合、cp コマンドはスペシャル・ファイルを正規ファイルにコピーしようとします。

注: このコマンドによって生成される読み取り/書き込みシステム呼び出しの入出力バッファー・サイズは、AIX_STDBUFSZ 環境変数を使用して構成できます。

フラグ

項目 説明
-d ソース・ファイルが暗号化解除 (平文) 形式でターゲットに保管されるように指定します。
-e ターゲット・ファイルシステムが暗号化ファイルシステム (EFS) である場合に、 ソース・ファイルが暗号化形式で保管されるように指定します。
-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 コマンドは、標準エラーに診断メッセージを書き込む場合があります。 SourceFile/SourceDirectorynanoseconds フィールドは、最後の変更時または最終アクセス時には複写されません。
  • ユーザー 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 フラグが指定されている場合、 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 オプションのいずれも指定されていなければ、デフォルトでこれらのオプションのどれを使用するかが指定されていません。以下の点を考慮してください。
  • -H オプションを指定すると、cp コマンドは SourceFile オペランドとして指定した任意のシンボリック・リンクが参照しているファイルのタイプと内容に基づいてアクションをとります。
  • -L オプションを指定すると、cp コマンドは SourceFile オペランドとして指定した任意のシンボリック・リンク、またはファイル階層の横断中に検出された任意のシンボリック・リンクが参照しているファイルのタイプと内容に基づいてアクションをとります。
  • -P オプションを指定すると、cp コマンドは SourceFile オペランドとして指定した任意のシンボリック・リンクおよびファイル階層の横断中に検出された任意のシンボリック・リンクをコピーしますが、どのシンボリック・リンクにも従いません。
-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 エラー
注: -f フラグを指定しない限り、暗号化ファイルを平文ファイルで上書きすることはできず、その逆もまた同様です。 ターゲットの暗号化状況は、-e フラグまたは -d フラグ、 暗号化継承 (-e フラグまたは -d フラグを -f フラグと共に指定しなかった場合)、 およびソース・ファイルの暗号化状況 (暗号化継承が非アクティブの場合) により異なります。

終了状況

このコマンドは次の終了値を戻します。

項目 説明
0 すべてのファイルが正常にコピーされました。
>0 エラーが発生しました。

  1. 現行ディレクトリー内でファイルを別のファイルにコピーするには、 以下のように入力します。
    cp prog.c prog.bak
    ここでは、prog.cprog.bak にコピーします。 ファイル prog.bak がまだ存在していなければ、cp コマンドが作成します。このファイルが既に存在していれば、cp コマンドは prog.c ファイルのコピーに置換します。
  2. 現行ディレクトリーのファイルを別のディレクトリーにコピーするには、 以下のように入力します。
    cp jones /home/nick/clients
    ここでは、jones ファイルを /home/nick/clients/jones にコピーします。
  3. ファイルを新しいファイルにコピーし、 修正日時およびソース・ファイルに関連付けられたアクセス制御リストを保存するには、 以下のように入力します。
    cp -p smith smith.jr
    ここでは、smith ファイルを smith.jr ファイルにコピーします。システムは現在の日付とタイム・スタンプでファイルを作成する代わりに、smith.jr ファイルに smith ファイルと同じ日付と時刻を与えます。smith.jr ファイルは、smith ファイルのアクセス制御保護も受け継ぎます。
  4. 任意のディレクトリー内のすべてのファイルを新しいディレクトリーにコピーするには、 以下のように入力します。
    cp /home/janet/clients/* /home/nick/customers
    ここでは、clients ディレクトリー内のファイルだけを customers ディレクトリーにコピーします。
  5. ディレクトリーを、そのファイルおよびサブディレクトリーを含めて別のディレクトリーにコピーするには、 以下のように入力します。
    cp /home/janet/clients/* /home/nick/customers
    注: ディレクトリーをそれ自身にはコピーできません。
    ここでは、clients ディレクトリーを、その中のファイル、サブディレクトリー、およびサブディレクトリー内のファイルも含めて、customers/clients ディレクトリーにコピーします。
  6. 特定のファイルセットを別のディレクトリーにコピーするには、 以下のように入力します。
    cp jones lewis smith /home/nick/clients
    ここでは、ユーザーの現在の作業ディレクトリーの中の joneslewis、および smith ファイルを /home/nick/clients ディレクトリーにコピーします。
  7. パターン・マッチング文字を使ってファイルをコピーするには、 以下のように入力します。
    cp programs/*.c .
    ここでは、programs ディレクトリー内の .c で終わるファイルを単一の . (ドット) で指定される現行ディレクトリーにコピーします。 c と最後のドットの間にはスペースを 1 つタイプしなければなりません。
  8. ファイルを新しいファイルにコピーし、ソース・ファイルに関連した ACL およ び EA を保存する場合は、次のように入力します。
    cp -U smith smith.jr

ファイル

/usr/bin/cp
cp コマンドが入っています。