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リファレンスマニュアル(日本語)