Linuxのコマンド操作を学ぶうえで、ファイルやディレクトリのコピーに使われる「cp」コマンドは基本中の基本です。
単純にファイルをコピーするだけでなく、「属性を保持したコピー」や「ディレクトリを再帰的にコピーする方法」など、意外と知られていないオプションもあります。
本記事では、Linuxの「cp」コマンドについて、基本的な使い方から応用的な使い方まで、わかりやすく解説します。初心者の方でも実践できるように具体的な例を交えながら説明しますので、ぜひ参考にしてください。
cpコマンドとは?
「cp」は「copy」の略で、Linuxにおいてファイルやディレクトリをコピーするコマンドです。
書式は以下のように非常にシンプルです。
cp [オプション] コピー元 コピー先
基本的な例を挙げると、
cp file1.txt file2.txt
このコマンドは、file1.txt
の内容をコピーして file2.txt
という新しいファイルを作成します。file2.txt
がすでに存在する場合は、その内容が上書きされますので注意が必要です。
ファイルをコピーする基本的な使い方
単一のファイルをコピーする場合は、以下のように実行します。
cp original.txt backup.txt
このコマンドでは original.txt
の内容を backup.txt
にコピーします。
複数のファイルを一度にコピーする場合は、コピー先をディレクトリにする必要があります。
cp file1.txt file2.txt /home/user/backup/
この場合、file1.txt
と file2.txt
が /home/user/backup/
にコピーされます。
ディレクトリを再帰的にコピーする方法
通常、cp
コマンドはファイル単体のコピーに使いますが、ディレクトリ全体をコピーしたい場合もありますよね。
このときに使うのが -r
(または --recursive
)オプションです。
cp -r my_folder/ backup_folder/
この例では、my_folder
ディレクトリとその中のすべてのファイル・サブディレクトリが backup_folder
にコピーされます。backup_folder
が存在しない場合は新たに作成されます。
補足:一部のLinuxディストリビューションでは、
-R
でも同様に再帰的コピーが行えますが、一般的には-r
を使うことが推奨されています。
属性を保持してコピーする方法
ファイルのパーミッション(権限)やタイムスタンプ、所有者情報などの属性をそのまま保持してコピーしたい場合は、-p
オプションを使います。
cp -p original.txt backup.txt
このコマンドでは、original.txt
の以下の属性が backup.txt
に引き継がれます。
- 所有者とグループ
- パーミッション(読み取り・書き込みなどの権限)
- 最終アクセス日時・最終変更日時
より完全な属性保持をしたい場合は、-a
オプション(アーカイブモード)を使うのがベストです。
cp -a my_folder/ backup_folder/
この -a
は実際には以下のオプションをまとめたものです:
-d
:シンボリックリンクをそのままコピー-p
:パーミッションやタイムスタンプを保持-r
:再帰的にコピー-u
:新しいファイルだけをコピー
つまり -a
を使えば、ディレクトリの内容を丸ごと、かつ状態そのままでコピーできます。
上書きを防ぐ方法
既に存在するファイルに上書きしてしまうのを防ぎたい場合は、-i
オプション(インタラクティブ)を使います。
cp -i file1.txt file2.txt
この場合、file2.txt
がすでに存在する場合は、上書きするかどうかの確認メッセージが表示されます。
cp: overwrite 'file2.txt'?
また、-n
オプションを使えば、存在するファイルは一切上書きせずスキップしてくれます。
cp -n file1.txt file2.txt
コピーの進捗を表示する方法
大量のファイルをコピーする際に便利なのが -v
(verbose)オプションです。
実行中に何がコピーされているのかが表示されるため、確認しながら操作できます。
cp -v file1.txt file2.txt
再帰的なコピーと組み合わせることもできます。
cp -av my_folder/ backup_folder/
この場合、属性を保持しつつ再帰的にコピーされ、かつ進捗も確認できます。
上書きの確認+属性保持+再帰コピーの実例
複数のオプションを組み合わせることで、cpコマンドは非常に柔軟に使えます。
以下は、属性を保持しつつ、ディレクトリ全体をコピーし、上書き時には確認を促すコマンドの例です。
cp -a -i my_folder/ backup_folder/
このように複数の条件をまとめて満たすことができるので、コピー作業における失敗を防げます。
まとめ
Linuxの「cp」コマンドは、ファイルやディレクトリのコピーを行ううえで欠かせない基本コマンドです。
基本的な使い方に加えて、オプションをうまく使いこなすことで、より安全・効率的にコピー作業を行うことができます。
特に以下のポイントは覚えておくと便利です。
-r
:ディレクトリの再帰的コピー-p
:ファイル属性の保持-a
:アーカイブモード(属性保持+再帰コピー)-i
/-n
:上書き防止オプション-v
:進捗表示
これらのオプションを必要に応じて組み合わせることで、日々のファイル操作がぐっと楽になります。
今後、スクリプトや自動化処理でも「cp」コマンドを活用する機会が増えることでしょう。
ぜひ本記事を参考に、Linuxのファイルコピーをマスターしてください!