コンテンツにスキップ

UNIXハンドブック/cp

出典: フリー教科書『ウィキブックス(Wikibooks)』

cp コマンドは、ファイルやディレクトリをコピーするための基本的なコマンドです。本章では、UNIX環境における cp コマンドの使用方法について解説します。GNU/Linux特有の拡張は扱わず、POSIX規格に準拠した内容に限定します。

基本的な使い方

[編集]

構文

[編集]
cp [オプション] ソース... ターゲット
  • ソース: コピー元のファイルやディレクトリ。
  • ターゲット: コピー先のファイルやディレクトリ。

[編集]
$ cp file1.txt file2.txt

file1.txt の内容を file2.txt にコピーします。

$ cp file1.txt /path/to/directory/

file1.txt を指定したディレクトリにコピーします。

主なオプション

[編集]

以下は、POSIX規格に準拠した主なオプションです。

-i: 確認を求める

[編集]

コピー先に同名のファイルが存在する場合に、上書きするかどうかを確認します。

$ cp -i file1.txt file2.txt
overwrite file2.txt? (y/n) y

-p: 属性を保持

[編集]

ファイルのタイムスタンプ、所有権、パーミッションを保持したままコピーします。

$ cp -p file1.txt file2.txt

-R: 再帰的にコピー

[編集]

ディレクトリを再帰的にコピーします。コピー元がディレクトリの場合、このオプションが必要です。

$ cp -R dir1/ dir2/

dir1 の内容を dir2 にコピーします。

-f: 強制コピー

[編集]

コピー先に既存のファイルがある場合でも、強制的に上書きします。

$ cp -f file1.txt file2.txt

注意点

[編集]
  1. 既存ファイルの上書き
    • デフォルトでは、cp コマンドは確認を求めずにコピー先のファイルを上書きします。安全のために -i オプションを使用することが推奨されます。
  2. ディレクトリのコピー
    • ディレクトリをコピーする場合は -R オプションを必ず指定してください。指定しないとエラーになります。
  3. 属性の保持
    • -p オプションを使用すると、元のファイルのタイムスタンプやパーミッションをコピー先に引き継ぐことができます。
  4. シンボリックリンクの扱い
    • デフォルトでは、cp はシンボリックリンク自体をコピーします。リンク先の内容をコピーする場合は追加のオプションが必要ですが、本章ではPOSIXに準拠するため詳細は割愛します。

例題

[編集]

例1: 単一ファイルをコピー

[編集]
$ cp file1.txt backup.txt

file1.txtbackup.txt としてコピーします。

例2: ディレクトリ全体をコピー

[編集]
$ cp -R project/ project_backup/

project ディレクトリの内容を project_backup にコピーします。

例3: 属性を保持してコピー

[編集]
$ cp -p file1.txt file2.txt

タイムスタンプやパーミッションを保持したまま file1.txtfile2.txt にコピーします。

まとめ

[編集]

cp コマンドは、ファイルやディレクトリをコピーするためのシンプルかつ強力なツールです。オプションを適切に使用することで、安全かつ効率的にコピー操作を行うことができます。本章で紹介した基本的なオプションを理解し、実際の操作に役立ててください。