概要
ファイルやディレクトリをコピーします。バックアップ、テンプレート複製、設定ファイルの退避などで日常的に使います。
基本構文
cp [オプション] 元 ... 先詳細解説
cpは、ファイルやディレクトリの内容を別の場所へ複製するための基本コマンドです。単一ファイルのコピーだけでなく、ディレクトリ全体の再帰的コピー、属性保持付き複製、上書き確認付きコピーなど、実務で使う場面は非常に多くあります。
単純に見えて重要なのは、上書き、属性保持、シンボリックリンクの扱いです。設定ファイルを退避したつもりが属性を失っていた、ディレクトリを丸ごとコピーしたつもりが再帰オプションを忘れた、といった事故は珍しくありません。
GNU系では-aが実務上便利で、再帰コピーと属性保持をまとめて行えます。
このコマンドを使う場面
設定ファイルの退避、配布用テンプレートの複製、作業前バックアップ、ディレクトリ全体の複写をしたい時に使います。
まず安全に試す方法
1. printf "%sn" "demo" > a.txt
2. cp a.txt b.txt
3. ls -l a.txt b.txt
4. cmp a.txt b.txt
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
小さなテキストファイルを作り、cpで複製して内容一致を確認します。
-
cp -aで退避を作り、statで元とコピー先の属性を比べます。
資格試験との関連
-
LinuC レベル1
範囲: 1.02 ファイル・ディレクトリの操作と管理根拠: officialLinuCレベル1では、基本的なファイル管理、リンク、ファイル配置と検索が主要範囲です。cpはその中核です。
-
LPIC-1
範囲: 104.7 システムファイルの検索と正しい配置根拠: officialLPIC-1では、ファイル配置、コマンド探索、基本的なファイル操作と確認が求められます。cpはその土台になります。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、cpはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。
実行結果サンプル
-
printf "%sn" "demo" > a.txt cp a.txt b.txt cat b.txtdemo -
cp -a /etc/hosts hosts.bak stat hosts.bak属性情報の表示
戻り値コード
- 0 要求したコピー処理が成功しました。
- >0 入力ファイル不在、権限不足、上書き拒否などで失敗しました。
使用例
cp file1 file2cp -i source.txt dest.txtcp -r srcdir backupdircp -a app.conf app.conf.bak
よくあるエラー
-
ディレクトリをコピーしたら失敗した 原因: 再帰指定が不足しています。対処: ディレクトリ全体ならcp -rまたはcp -aを使います。
-
退避したはずなのに権限や時刻が変わった 原因: 属性保持を指定していません。対処: 必要に応じてcp -aやcp -pを使います。
導入・互換性情報
POSIXで基本機能は定義されていますが、-aなど便利なオプションはGNU系拡張です。BSD系では細部が異なることがあります。
- Debian GNU/Linux / 13 / GNU coreutils 9.7 / Bash 5.2.37
注意点 / セキュリティリスク
上書き事故の危険があります。特に同名ファイルへのコピー、再帰コピー、権限の強い場所への操作では、先にlsやstatで対象を確認すると安全です。
FAQ
-
Q. cp -rとcp -aはどう違いますか。 A. -rは再帰コピー中心、-aは再帰に加えて属性保持も重視するGNU系の便利指定です。
-
Q. 安全に上書きを避けるにはどうすればよいですか。 A. cp -iで確認を入れるか、先に別名退避してから作業します。
関連用語
参照リンク
- カテゴリー: File And Directory
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎