このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:ファイルやディレクトリをコピーする:cpコマンド:cpコマンド

cpコマンドとは
cpコマンドは、ファイルやディレクトリをコピーするための基本的なコマンドです。ファイルのバックアップを取ったり、別の名前でファイルを保存したい場合などに使用します。ここでは、cpコマンドの基本的な使い方やオプションについて、具体的な例を交えて解説します。

cpコマンドの基本
cpは "copy" の略で、その名の通り、ファイルやディレクトリをコピーするためのコマンドです。コピー元とコピー先を指定することで、簡単にファイルの複製が行えます。
【書式】cp [オプション] <コピー元> … <コピー先>
- コピー元:コピーしたいファイルやディレクトリを指定します。複数指定することも可能です。
- コピー先:コピー先のファイル名やディレクトリを指定します。
cpコマンドの基本的な使い方
| 使用例 | 説明 |
|---|---|
cp ファイル名 コピー先 | 単一のファイルを指定した場所にコピーする。 |
cp ファイル名1 ファイル名2 コピー先ディレクトリ | 複数のファイルをディレクトリにまとめてコピーする。 |
cp -i ファイル名 コピー先 | コピー先に同名のファイルがある場合、上書き確認を行う。 |
cp -r ディレクトリ名 コピー先 | ディレクトリを再帰的にコピーする。 |
基本的な例
1.作業ディレクトリに移動
user01@ubuntu:~$ cd work
user01@ubuntu:~/work$2.ファイルをコピー file1をfile2という名前でコピーします。
user01@ubuntu:~/work$ touch file1
user01@ubuntu:~/work$ cp file1 file2
user01@ubuntu:~/work$ ls
file1 file2ディレクトリへのコピー
コピー先にディレクトリを指定した場合、コピー元のファイルをそのディレクトリ内に同じファイル名でコピーします。
例として、カレントディレクトリのfile1をdir1というディレクトリにコピーします。
user01@ubuntu:~/work$ mkdir dir1
user01@ubuntu:~/work$ cp file1 dir1
user01@ubuntu:~/work$ ls dir1
file1複数のファイルをディレクトリへコピー
ディレクトリ内にファイルをコピーする際、複数のファイルをまとめて指定できます。この場合、cpコマンドは引数の最後に指定したディレクトリへファイルをコピーします。
例として、ディレクトリdir2にfile1、file2、file3の3つのファイルをコピーします。
user01@ubuntu:~/work$ touch file3
user01@ubuntu:~/work$ mkdir dir2
user01@ubuntu:~/work$ cp file1 file2 file3 dir2
user01@ubuntu:~/work$ ls dir2
file1 file2 file3パス名展開を利用したコピー
ワイルドカード(*)を使用して、複数のファイルを一度に指定することもできます。
例として、fileで始まるファイルをまとめてbackup_dirにコピーします。
user01@ubuntu:~/work$ mkdir backup_dir
user01@ubuntu:~/work$ cp file* backup_dir
user01@ubuntu:~/work$ ls backup_dir
file1 file2 file3上書きを確認するコピー
cpコマンドは、コピー先に同名のファイルが存在する場合でも、確認なしにそのまま上書きします。
user01@ubuntu:~/work$ cp file1 file2 このため、コピー前にlsコマンドなどでコピー先に同名のファイルが存在しないか確認することが重要です。
上書き確認をしてほしい場合、-iオプションを使用します。これにより、コピー先ファイルが存在する場合に上書きしてよいか確認されます。
user01@ubuntu:~/work$ cp -i file1 file2
cp: 'file2' を上書きしますか? y確認時にyまたはY(Yes)を入力すると上書きされます。
ディレクトリのコピー
cpコマンドでディレクトリをコピーしようとすると、エラーが発生します。
user01@ubuntu:~/work$ cp dir1 dir3
cp: -r が指定されていません; ディレクトリ 'dir1' をスキップしていますディレクトリをコピーする場合は、再帰的にコピーを行う-rオプションを指定します。
- ディレクトリ
dir3が存在しない場合:dir1をdir3という名前でコピーします。 - ディレクトリ
dir3が既に存在する場合:dir1をdir3の中に、名前を変えずにコピーします。
また、-rオプションを指定すると、コピー元ディレクトリ内のファイルやサブディレクトリもすべてコピーされます。
実行例
現在のディレクトリの内容を確認します。
user01@ubuntu:~/work$ ls -F
backup_dir/ dir1/ dir2/ file1 file2 file3dir3というディレクトリは存在しません。
user01@ubuntu:~/work$ ls dir1
file1dir1の中にはfile1があります。
dir1をdir3としてコピーします。
user01@ubuntu:~/work$ cp -r dir1 dir3
user01@ubuntu:~/work$ ls dir3
file1新しく作成されたdir3の中にfile1があります。
不要になったファイルとディレクトリの削除
作業が終わったら、不要になったファイルやディレクトリをパス名展開を利用して削除します。
user01@ubuntu:~/work$ rm -r backup_dir dir* file*
user01@ubuntu:~/work$ ls
user01@ubuntu:~/work$まとめ
cpコマンドの基本
・ファイルやディレクトリをコピーするために使用します。
・コピー元とコピー先を指定します。- ファイルのコピー
・単一ファイルのコピーや、複数ファイルのディレクトリへのコピーが可能です。
・ワイルドカードを使って複数ファイルを指定できます。 - 上書き確認
・デフォルトでは上書き確認なしでコピーします。
・-iオプションを使うと、上書き時に確認を求めます。 - ディレクトリのコピー
・ディレクトリをコピーするには、-rオプションが必要です。
・再帰的にコピー元のディレクトリとその中身をコピーします。
cpコマンドは日常的によく使用するコマンドの一つです。基本的な使い方と注意点を理解して、安全かつ効率的にファイル操作を行いましょう。
