cp コマンド

目的

ファイルをコピーします。

構文

ファイルを別のファイルにコピーするには、以下の構文を使用します。

cp [ -d ] [ -e ] [ -E {force|ignore|warn} ] [ -f ] [ -h ] [ -i ] [ -p ] [ -I ] [ -S ] [ -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 操作は失敗します。
無視
エクステント属性の保持のエラーを無視します。
warn
ファイルのスペースの予約または固定エクステント・サイズを保存できない場合に、警告を出します。
-f ターゲット・ファイルが書き込み操作のためにオープンできなければ、 そのファイルを除去するように指定します。 除去は cp コマンドによるすべてのコピー処理よりも前に実行されます。
-h cp コマンドにシンボリック・リンクをコピーさせます。 デフォルトでは、シンボリック・リンクに従うので、ファイルはシンボリック・リンクが指す位置にコピーされます。
-H SourceFile オペランドとして指定した任意のシンボリック・リンクが参照しているファイルのタイプと内容に基づいてアクションをとります。
-i 上書きするファイル名を入力するようプロンプトを表示します。 これは TargetDirectory または TargetFile パラメーターに SourceFile または SourceDirectory パラメーターで指定したファイルと同じファイル名がある場合です。 次のように入力したとします。y又はそのロケールに相当するもの ycp コマンドは続行します。 それ以外の応答を入力すると、cp コマンドはファイルの上書きをしません。
-I ACL 変換中に警告メッセージを抑制します。
-L SourceFile オペランドとして指定した任意のシンボリック・リンク、またはファイル階層の横断中に検出された任意のシンボリック・リンクが参照しているファイルのタイプと内容に基づいてアクションをとります。
-p 以下に示すような SourceFile/SourceDirectory の特性を TargetFile および/または TargetDirectory に複写します。
  • データを最後に修正した時刻およびそのデータに最後にアクセスした時刻。 何らかの理由でこの複写に失敗すると、cp コマンドは、標準エラーに診断メッセージを書き込む場合があります。 SourceFile / SourceDirectoryナノ秒フィールドは、最終変更時間または最終アクセス時間に対して複製されません。
  • ユーザー 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 オペランドとして指定した任意のシンボリック・リンクおよびファイル階層の横断中に検出された任意のシンボリック・リンクをコピーしますが、どのシンボリック・リンクにも従いません。
-S ソース・ファイルがスパースである場合にソース・ファイルを宛先ファイルにコピーする間、ソース・ファイルをスパースのままに保持します。

スパース・ファイルとは、ファイルに割り当てられたブロックがほとんど空である場合に、より効率的にファイルシステム・スペースを使用するよう試みるタイプのデータ・ファイルです。

-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 フラグ、-f フラグと一緒に -e または -d フラグを指定しない場合の暗号化継承、および暗号化継承が活動状態でない場合のソース・ファイルの暗号化状況に応じて決まります。

終了状況

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

項目 説明
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
    これにより、jones,lewisおよびsmith現行作業ディレクトリー内のファイルを/home/nick/clientsディレクトリー。
  7. パターン・マッチング文字を使ってファイルをコピーするには、次のように入力します。
    cp programs/*.c .
    これにより、以下のファイルがコピーされます。programs末尾が以下のディレクトリー.c現行ディレクトリーに送られ、単一のディレクトリーによって示されます。.(ドット) で現行作業行を指定します。 以下の間にスペースを入力する必要があります。cそして最後の点です
  8. ファイルを新しいファイルにコピーし、ソース・ファイルに関連した ACL およ び EA を保存する場合は、次のように入力します。
    cp -U smith smith.jr
  9. ソース・ファイルをコピーする間、ソース・ファイルをスパースのままに保持するには、次のように入力します。
    cp -S file.c sparse_file.c

ファイル

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