Cp (UNIX)

cpコマンド:ファイルコピーの基本



`cp`コマンドは、UNIXおよびUNIX系のオペレーティングシステムにおいて、ファイルをある場所から別の場所へコピーするためのコマンドです。このコマンドは、ファイルシステム間でのコピーもサポートしており、元のファイルの内容を保持したまま、新しい場所に複製を作成します。コピー先のファイル名も、元のファイル名と同じにするか、別の名前を付けるかを選択できます。ここでは、POSIX標準に準拠した`cp`コマンドの仕様を中心に解説し、GNU Core Utilitiesに含まれる拡張オプションについても触れます。

基本的な使用法



`cp`コマンドには、大きく分けて次の3つの使い方があります。

1. 単一ファイルのコピー

cp [オプション] ソースファイル ターゲットファイル

これは、指定されたソースファイルを、指定されたターゲットファイルにコピーします。

2. 複数ファイルをディレクトリにコピー

cp [オプション] ソースファイル1 ソースファイル2 ... ターゲットディレクトリ

複数のソースファイルを、指定されたターゲットディレクトリにコピーします。

3. ディレクトリのコピー

cp [オプション] -r|-R ソースディレクトリ1 ソースディレクトリ2 ... ターゲットディレクトリ

指定されたソースディレクトリを、指定されたターゲットディレクトリにコピーします。この際、`-r`または`-R`オプションを使用します。

主なオプション



`cp`コマンドには、さまざまなオプションが用意されており、コピーの動作を細かく制御できます。以下に主なオプションを説明します。

`-f` (force): コピー先のファイルが既に存在し、書き込みに失敗した場合、強制的に上書きを行います。コピー処理よりも前に削除が試みられます。
`-i` (interactive): コピー先にファイルが存在する場合、上書きするかどうかをユーザーに確認します。`y`を入力すると上書きが実行されます。
`-p` (preserve): コピー元のファイルのタイムスタンプ、所有者ID、グループID、ファイルパーミッション(SUID/SGIDビットを含む)をコピー先に保存します。
`-R` (recursive): ディレクトリを再帰的にコピーします。サブディレクトリ内のファイルやディレクトリも全てコピーします。

具体的な使用例



以下に`cp`コマンドの具体的な使用例を挙げます。

1. カレントディレクトリ内のファイルをコピーする:

cp prog.c prog.bak

`prog.c`の内容を`prog.bak`にコピーします。`prog.bak`が存在しない場合は新規作成され、存在する場合は上書きされます。

2. ファイルを別のディレクトリにコピーする:

cp jones /home/nick/clients

`jones`ファイルを`/home/nick/clients/jones`にコピーします。

3. タイムスタンプなどを保持してコピーする:

cp -p smith smith.jr

`smith`ファイルを`smith.jr`にコピーし、元のファイルのタイムスタンプやパーミッションも保持します。

4. ディレクトリ内のファイルを別のディレクトリにコピーする:

cp /home/janet/clients/ /home/nick/customers

`/home/janet/clients`ディレクトリ内のファイルのみを`/home/nick/customers`ディレクトリにコピーします。

5. ディレクトリごと再帰的にコピーする:

cp -R /home/nick/clients /home/nick/customers

`/home/nick/clients`ディレクトリとそのサブディレクトリを`/home/nick/customers/clients`ディレクトリにコピーします。

6. 複数ファイルをまとめてコピーする:

cp jones lewis smith /home/nick/clients

`jones`、`lewis`、`smith`の3つのファイルを`/home/nick/clients`ディレクトリにコピーします。

7. パターンマッチングを利用したコピー:

cp programs/.c .

`programs`ディレクトリ内の`.c`で終わるファイルを、カレントディレクトリにコピーします。

関連コマンド



`cp`コマンドと関連性の高いコマンドを以下に示します。

`cpio`: ディレクトリ構造全体をコピーするためのコマンドです。
`mv`: ファイルやディレクトリの移動に使います。
`rm`: ファイルやディレクトリの削除に使います。
`uucp`: UNIXシステム間でファイルをコピーするためのコマンドです。
`scp`: SSHプロトコルを使ってセキュアにファイルをコピーします。

まとめ



`cp`コマンドは、UNIX系OSにおけるファイル操作の基本となるコマンドの一つです。さまざまなオプションを使いこなすことで、より柔軟で効率的なファイルコピーを実現できます。本記事を参考に、`cp`コマンドを効果的に活用してください。

外部リンク



cp(1) - Linux JM Project
cp(1) - OpenBSD(英語)
cp(1) - HMUGリファレンスマニュアル(英語)
* cp(1) - Debianリファレンスマニュアル(日本語)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。