「Linuxでファイルをコピーしたいけど、cpコマンドの使い方がよくわからない」
そんな悩みはありませんか?
Linuxを扱ううえでファイルコピーはもっとも基本的な操作の一つです。
でもオプションや使い方を知らないと、上書きしたくないファイルを間違って消してしまったり、大量コピーに時間がかかる原因にもなります。
この記事では、cpコマンドの基本的な使い方から、便利なオプションやよくある失敗例まで、初心者にもわかりやすく解説します。
cpコマンドとは?

cpは「copy(コピー)」の略で、Linuxでファイルやディレクトリを複製するときに使う基本コマンドです。
Windowsでいう「ドラッグ&ドロップでコピー」や「右クリック→コピー」に相当する、とても重要な操作です。
cpコマンドでできること
- ファイルの複製
- フォルダ全体の複製
- 名前を変えながらのコピー
- 複数ファイルの一括コピー
- 条件付きコピー(新しいファイルだけなど)
基本的な使い方

ファイルをコピーする
もっとも基本的な使い方です。
cp コピー元ファイル コピー先
実際の例
cp sample.txt backup.txt
これで現在のディレクトリにあるsample.txt
をbackup.txt
という名前でコピーします。
別のフォルダにコピーする
cp sample.txt /home/user/backup.txt
これでsample.txt
を/home/user/
フォルダにbackup.txt
という名前でコピーします。
同じ名前でコピーする
ファイル名を変えずにコピーしたい場合は、コピー先にフォルダ名だけを指定します。
cp sample.txt /home/user/
この場合、/home/user/sample.txt
として保存されます。
複数ファイルを一度にコピーする
複数のファイルを一つのフォルダにコピーできます。
cp file1.txt file2.txt file3.txt /backup/
最後に指定するのが「コピー先のフォルダ」で、それ以外はすべて「コピー元のファイル」になります。
ディレクトリをコピーする

cpはデフォルトではフォルダ(ディレクトリ)をコピーできません。
フォルダをコピーするには特別なオプションが必要です。
rオプション(再帰的コピー)
フォルダとその中身すべてをコピーするには-r
オプションを使います。
cp -r コピー元ディレクトリ コピー先
実際の例
cp -r documents /home/user/documents_backup
これでdocuments
フォルダ全体が/home/user/
にdocuments_backup
という名前でコピーされます。
注意点
-r
オプションがないとエラーになります- フォルダの中にさらにフォルダがあっても、すべて一緒にコピーされます
- コピーには時間がかかる場合があります
便利なオプション一覧
cpコマンドには作業を安全で効率的にするオプションがたくさんあります。
iオプション(確認しながらコピー)
上書きするファイルがあるときに「上書きしてもいいですか?」と確認してくれます。
cp -i file1.txt file2.txt
使用例
$ cp -i sample.txt backup.txt
cp: overwrite 'backup.txt'? y
y
(yes)と入力すると上書きされます。n
(no)なら取りやめます。
uオプション(新しいファイルだけコピー)
コピー先より新しいファイルのときだけ上書きします。
cp -u file1.txt /backup/
このオプションは同期作業やバックアップ時に便利です。
pオプション(属性を保持してコピー)
タイムスタンプ(作成日時・更新日時)やパーミッション(権限)を維持したままコピーできます。
cp -p file1.txt /backup/
重要なファイルをコピーするときに使いましょう。
vオプション(詳細を表示)
コピー中のファイル名を表示してくれるので進捗がわかります。
cp -v file1.txt /backup/
実行結果の例
$ cp -v *.txt /backup/
'file1.txt' -> '/backup/file1.txt'
'file2.txt' -> '/backup/file2.txt'
オプションの組み合わせ
複数のオプションを同時に使うこともできます。
cp -riv documents/ /backup/
この例では:
-r
:フォルダごとコピー-i
:上書き時に確認-v
:進捗を表示
実践的な使用例

バックアップを作る
重要なファイルをバックアップするときの例です。
# 単体ファイルのバックアップ
cp -p important.txt important.txt.backup
# フォルダ全体のバックアップ
cp -rp project/ project_backup/
# 日付付きバックアップ
cp -p config.txt config_$(date +%Y%m%d).txt
設定ファイルを安全にコピー
システムの設定ファイルを変更前にバックアップする例です。
# 確認しながら安全にコピー
sudo cp -ip /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
開発ファイルの配布
プロジェクトファイルを複数の場所に配布する例です。
# 複数の場所に一度にコピー
cp -rv src/ /var/www/html/
cp -rv src/ /backup/projects/
よくあるトラブルと解決方法

上書きしてしまう問題
問題
cpはデフォルトで同じ名前があると何も聞かずに上書きします。
解決方法
大事なファイルを守るために-i
オプションを付けるクセをつけましょう。
# 危険:何も聞かずに上書き
cp file1.txt file2.txt
# 安全:確認してから上書き
cp -i file1.txt file2.txt
パーミッションが変わる問題
問題
cpではパーミッション(ファイルの権限)がコピー先で変わることがあります。
解決方法
権限やタイムスタンプを維持したい場合は-p
オプションを付けましょう。
# 権限が変わる可能性
cp script.sh /usr/local/bin/
# 権限を維持
cp -p script.sh /usr/local/bin/
フォルダがコピーできない問題
問題
cp: -r not specified; omitting directory 'foldername'
というエラーが出る。
解決方法
フォルダをコピーするときは必ず-r
オプションを付けます。
# エラーになる
cp documents/ /backup/
# 正しい方法
cp -r documents/ /backup/
容量不足でコピーが失敗する問題
問題
大きなファイルをコピーするときに容量不足でエラーになる。
解決方法
事前に容量を確認しましょう。
# 容量確認
df -h
# ファイルサイズ確認
ls -lh filename
du -sh foldername/
応用テクニック

ワイルドカードを使った一括コピー
特定の拡張子のファイルをまとめてコピーできます。
# すべてのテキストファイルをコピー
cp *.txt /backup/
# すべてのJPG画像をコピー
cp *.jpg /images/backup/
# 特定のパターンにマッチするファイルをコピー
cp config_*.conf /etc/backup/
隠しファイルも含めてコピー
ドット(.)で始まる隠しファイルも含めてコピーしたい場合:
# 隠しファイルも含めてすべてコピー
cp -r source/. destination/
エイリアスを作って安全にする
よく使うオプションの組み合わせをエイリアスにしておくと便利です。
# .bashrcに追加
alias cpi='cp -i'
alias cpr='cp -r'
alias cpv='cp -v'
# 使用例
cpi important.txt backup.txt
まとめ
Linuxのcpコマンドはシンプルですが、オプションを知っているかどうかで作業の安全性と効率が大きく変わります。
覚えておきたい基本形
- ファイルコピー:
cp file1.txt file2.txt
- フォルダコピー:
cp -r folder1/ folder2/
- 安全なコピー:
cp -i file1.txt file2.txt
- 属性保持コピー:
cp -p file1.txt backup.txt
- 進捗表示コピー:
cp -v file1.txt backup.txt
組み合わせて使う
実際の作業では複数のオプションを組み合わせることが多いです:
# フォルダを安全に、属性を保持して、進捗を見ながらコピー
cp -ripv source/ backup/
コメント