Linuxコマンド一覧

cpコマンド|ファイルやディレクトリをコピーする

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
cp を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

cp はファイルをコピーするコマンドです。名前を変えてのコピー、ディレクトリへのコピー、-r でディレクトリごと複製する方法と、黙って上書きされる落とし穴を、ブラウザ上のターミナルで打ちながら確認できます。

最終更新: 2026-09-05

書式

cp [オプション] コピー元 コピー先

コピー元はそのまま残り、コピー先に複製ができます。 コピー先がディレクトリなら、その中に同じ名前で入ります。

まず打ってみる

このページのターミナルには、いくつかのファイルと backup/ があります。

$ ls
backup/  config.json  README.md  src/

まず、名前を変えてコピーしてみます。

$ cp config.json config.backup.json

cp は成功したとき何も表示しません。 増えたかどうかは ls で確かめます。

$ ls
backup/  config.backup.json  config.json  README.md  src/

ディレクトリの中へコピーする

コピー先にディレクトリを指定すると、その中に同じ名前で入ります。

$ cp README.md backup/
$ ls backup
config.json  README.md

ディレクトリごとコピーする

ディレクトリをそのまま渡すと、cp は断ります。

$ cp src backup
cp: -r not specified; omitting directory 'src'

中身をたどって複製する、という別の作業になるためです。 -r を付けると、中のファイルごと複製します。

$ cp -r src backup
$ ls backup
config.json  README.md  src/
$ ls backup/src
index.js  utils.js

実務での使いどころ

cp は、壊す前に戻せる状態を作るために打つことがいちばん多いコマンドです。

場面打ち方
設定を書き換える前に控えを取るcp config.json config.json.bak
サンプルから自分用の設定を作るcp .env.example .env
ディレクトリごと複製して試すcp -r project project-test
変更日時も保ったまま複製するcp -p config.json backup/

つまずきやすいところ

同名のファイルは黙って上書きされます。 cp は確認しません。 消えて困るものがある場所へコピーするときは -i を付けると、上書きの前に聞いてきます。

$ cp -i config.json backup/config.json

コピー先がディレクトリかどうかで結果が変わります。 cp a.txt backup は、backup がディレクトリなら中へコピー、無ければ backup という名前のファイルになります。 末尾に / を付けて backup/ と書いておくと、ディレクトリのつもりだったことが自分にも分かります。

元のファイルは消えません。 移動したいだけなら mv です。 cp のあとに元を消す手順を踏むと、消し忘れや消し間違いが起きます。

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

mv / rm / ls

よくある質問

cp は何の略ですか?
copy の略です。元のファイルはそのまま残り、指定した場所に複製ができます。
コピー先に同じ名前のファイルがあるとどうなりますか?
確認されずに上書きされます。消えて困るものがある場所へコピーするときは、-i を付けて確認させてください。
なぜディレクトリをコピーするのに -r が必要なのですか?
ディレクトリのコピーは、中にあるものを全部たどって複製する別の作業だからです。-r を付けないと cp は拒否して、うっかり大量のファイルを複製することを防ぎます。
cp と mv の違いは何ですか?
cp は元を残して複製し、mv は元を残さず移します。作業前のバックアップを取りたいときは cp、置き場所を変えたいだけなら mv です。
コピー先にディレクトリ名を渡すとどうなりますか?
そのディレクトリの中に、同じ名前でコピーされます。ディレクトリが存在しない場合は、その名前のファイルとしてコピーされます。