メインコンテンツへスキップ
初級7分で読める

cpでファイルコピー

Linuxのcpコマンドでファイルやディレクトリをコピーする方法を、実例を交えて分かりやすく解説します。

基礎編cpファイル操作初心者向けコピー

🎯 この記事で学べること

  • 1
    `cp`コマンドの基本的な使い方をマスターできます
  • 2
    ファイルやディレクトリを安全にコピーする方法がわかります
  • 3
    よく使うオプション(-i、-r、-p、-v)の意味と使い方を理解できます
  • 4
    上書きを防ぐための注意点と対策を学べます
  • 5
    実務でよく使うコピーのテクニックが身につきます

読了時間: 約7

cpコマンドとは

こんにちは!今回は、ファイル操作の基本中の基本、cpコマンドについて学んでいきましょう。

cpは「copy」の略で、ファイルやディレクトリをコピー(複製)するコマンドです。元のファイルはそのまま残るので、rmコマンドと違って安心して練習できますね!データのバックアップを取ったり、テンプレートから新しいファイルを作ったりと、日常的によく使うコマンドです。

基本的な使い方

cpコマンドの基本的な形は「cp コピー元 コピー先」です。とてもシンプルですね!

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

上のPlaygroundで順番にコマンドを実行してみてください。original.txtの内容がcopy.txtにコピーされたことが確認できますね!

実行結果はこんな感じになります:

$ cp original.txt copy.txt
$ ls -la *.txt
-rw-r--r-- 1 user staff 14 Jan 10 10:00 copy.txt
-rw-r--r-- 1 user staff 14 Jan 10 10:00 original.txt

よく使うオプション

cpコマンドには、より安全で便利にコピーを行うためのオプションがたくさんあります。よく使うものを見ていきましょう!

-i オプション(対話的コピー)

-iオプションは「interactive(対話的)」の略で、コピー先に同名のファイルがある場合、上書きする前に確認してくれます。これはとても重要な安全装置です!

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

実行すると「overwrite file2.txt? (y/n [n])」と聞かれます。yで上書き、nでキャンセルできます。大切なファイルを守るために、このオプションを使う習慣をつけましょう!

-r オプション(ディレクトリコピー)

ディレクトリをまるごとコピーしたい場合は、-r(recursive:再帰的)オプションを使います。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

-rオプションを使うと、ディレクトリの中身も含めて、構造をそのままコピーできます。プロジェクトのバックアップを取るときなどに便利ですね!

-p オプション(属性保持)

-pオプションは「preserve(保持)」の略で、ファイルの属性(更新日時、権限など)を保ったままコピーします。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

-v オプション(詳細表示)

-vオプションは「verbose(詳細)」の略で、何をコピーしているか表示してくれます。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

複数ファイルのコピー

複数のファイルを一度にコピーすることもできます。最後の引数がコピー先のディレクトリになります。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

ワイルドカードを使うともっと便利です:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

🎮 理解度チェック

Q1: cp file1.txt file2.txtを実行したとき、file1.txtはどうなりますか?

cp file1.txt file2.txtを実行したとき、file1.txtはどうなりますか?

Q2: ディレクトリをコピーするために必要なオプションは?

ディレクトリとその中身をコピーするために必要なオプションは?

Q3: 既存ファイルの上書き前に確認するオプションは?

コピー先に同名ファイルがある場合、上書き前に確認するオプションは?

実践的な使い方

バックアップの作成

作業前にバックアップを取る習慣をつけましょう:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

テンプレートからの新規作成

テンプレートファイルから新しいファイルを作成:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

安全なコピーのコツ

1. エイリアスの設定

より安全に使うために、エイリアスを設定することをおすすめします:

# ~/.bashrcに追加
alias cp='cp -i'  # 常に確認するようにする

2. コピー前の確認

大量のファイルをコピーする前に、まず確認しましょう:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

よくある使用例

設定ファイルの複製

# .bashrcをカスタマイズする前にバックアップ
cp ~/.bashrc ~/.bashrc.original

# 別ユーザーの設定をコピー
sudo cp /home/otheruser/.vimrc ~/.vimrc

ログファイルの保存

# 現在のログを日付付きで保存
cp /var/log/app.log /backup/logs/app_$(date +%Y%m%d_%H%M%S).log

プロジェクトの複製

# プロジェクトを複製して実験
cp -r production_code/ experimental_code/

注意点とトラブルシューティング

権限エラーの対処

# 権限がない場合
$ cp /etc/important.conf ~/
cp: cannot open '/etc/important.conf' for reading: Permission denied

# sudoを使う(必要な場合のみ)
$ sudo cp /etc/important.conf ~/

スペースを含むファイル名

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

📝 まとめ

今回はcpコマンドについて学びました!

  • cpはファイルやディレクトリを**コピー(複製)**するコマンド
  • 基本形はcp コピー元 コピー先
  • -iで対話的確認、-rでディレクトリコピー、-pで属性保持、-vで詳細表示
  • 元のファイルは残るので、安心して使える
  • バックアップやテンプレートからの作成など、実務で頻繁に使用

次はmvコマンドでファイルの移動とリネームを学びましょう!

YouTube動画で復習

動画でさらに詳しく学びたい方は、CommandAcademyのYouTubeチャンネルをチェック!視覚的にコマンドの動作を確認できます。

cpコマンドは日常的に最もよく使うコマンドの一つです。特に-iオプションを使う習慣をつけることで、大切なファイルを誤って上書きすることを防げます。しっかりマスターして、安全なファイル操作を心がけましょう!