はじめに
Linuxシステムで、ファイルやディレクトリを移動・複製する作業は日常的に発生します。この「複製」の役割を担うのが、cp(copy)コマンドです。cpコマンドは、ソース(コピー元)のファイルやディレクトリを、指定したデスティネーション(コピー先)に複製を作成します。
cpコマンドはシンプルながら、ファイルの属性や権限を維持したり、ディレクトリ全体を再帰的にコピーしたりする際に、多様なオプションが必要です。
LPICレベル1の試験では、特にディレクトリの再帰的コピーや、コピー時の上書き防止に関するオプションの理解が問われます。この記事では、cpコマンドの基本的な使い方から、コマンド名の由来、必須オプション、そしてLPIC対策として押さえるべきポイントまでを詳しく解説していきます。
cpコマンドの基本
まずは、cpコマンドの基本的な使い方と、コピーの際に重要な3つのパターンから見ていきましょう。
cpコマンドの書式
cp [オプション] ソース(コピー元) デスティネーション(コピー先)
- ポイント: コピー元とコピー先を正確に指定することが重要です。
主要オプション一覧
| オプション | 意味 | 補足 |
-r または -R | ディレクトリを再帰的にコピーする | recursive (必須) |
-i | 上書きする前に確認のプロンプトを表示する | interactive |
-p | ファイルの属性(権限、タイムスタンプなど)を保持する | preserve |
-a | アーカイブモード。属性を保持し、再帰的にコピー(-rpdとほぼ同等) | archive |
-v | 実行されたコピー処理を詳細に表示する | verbose |
-f | 既に存在するファイルへの上書きを強制する | force |
基本的なコピーのパターン
| パターン | 書式 | 動作 |
| ファイルからファイル | cp fileA fileB | fileAの内容でfileBを新規作成または上書きします。 |
| ファイルからディレクトリ | cp fileA dirB | dirB内にfileAという名前でファイルをコピーします。 |
| 複数ファイルからディレクトリ | cp fileA fileB dirC | dirC内にfileAとfileBをコピーします。 |
コマンド名の由来:なぜ「cp」なのか?
cpコマンドの「cp」は、英語の “copy”(コピーする、複製する) の短縮形です。
このコマンドの目的は、ファイルシステム内のデータを元の状態を保ったまま複製を作成することにあります。その機能がそのまま簡潔な2文字の略語として定着しました。
必須オプションの詳細と実践例
cpコマンドのオプションの中でも、特にディレクトリの扱いや、安全な操作に欠かせないものを詳しく見ていきます。
1. -r または -R (recursive) オプション:ディレクトリの再帰的コピー
意味: ディレクトリをコピーする場合に必須です。指定しないとエラーになります。ディレクトリとその中に含まれる全てのファイルとサブディレクトリを、丸ごとコピーします。
実践例:

original_dirフォルダ内には、サンプルファイルが2つ存在します。

/home/user配下にoriginal_dirが存在しています。ここでこのoriginal_dirをコピーしてnew_dirを作成してみます。
cp -r original_dir new_dir


new_dirが作成されており、その中身はoriginal_dirと同様にサンプルファイルが2つ入っています。
オプションの由来: rまたはRはrecursive(再帰的)の頭文字です。
2. -i (interactive) オプション:上書き前の確認
意味: コピー先に同名のファイルが既に存在する場合、上書きしてもよいかユーザーに確認のプロンプトを表示します。誤操作を防ぐための安全策として重要です。
実践例:
cp -i fileA /home/bunsoko/new_dir/origin_sample_fileA

~を上書きしますか?で
yを入力してエンター →上書きされます
nを入力してエンター →上書きされません
オプションの由来: iはinteractive(対話式)の頭文字です。
3. -p (preserve) オプション:属性の保持
意味: コピー先のファイルに対し、コピー元のファイルが持っていた**属性(パーミッション、タイムスタンプ、所有者・グループ)**を可能な限り維持したままコピーします。
実践例:
cp -p fileA fileD

オプションの由来: pはpreserve(保存する、維持する)の頭文字です。
4. その他の重要なオプション
-a(archive): ディレクトリ全体を、元の状態を完全に維持したままアーカイブ(保管)としてコピーします。-v(verbose): 実行されたコピー処理を詳細に表示します。-f(force): コピー先のファイルが書き込み禁止であっても、上書きを強制します。
LPIC対策としてのポイント
cpコマンドに関するLPICの出題傾向として、以下の点を確実に押さえておきましょう。
- ディレクトリの必須オプション: ディレクトリをコピーする際には、**
-r(または-R)**が必須であること。 - 安全性: 重要なファイルの上書きを防ぐ**
-i**オプションの役割。多くの環境でalias cp='cp -i'が設定されています。 - 属性の維持: 権限やタイムスタンプを維持する**
-p**オプションの役割。 - 上書きを強制:
-iエイリアスが設定されている環境で、上書き確認なしに強制したい場合は、コマンド名の前にバックスラッシュを付けて**\cpとするか、cp -f**オプションを使用します。
まとめ
今回は、ファイルとディレクトリを複製するcpコマンドについて、その基本的な使い方からコマンド名の由来、そして特に重要なオプションまでを詳しく解説しました。cpコマンドを安全かつ正確に使いこなすことは、Linuxシステム管理における基礎中の基礎です。
LPICレベル1の試験対策としては、各オプションのそれぞれの役割と使い分けをしっかりとマスターしておきましょう。


コメント