ファイル操作

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

Linux cp 基本コマンド

Linux cpコマンド入門
ファイルとディレクトリをコピーする

cpコマンドの基本的な使い方から、ディレクトリコピーやバックアップ活用まで解説します。

こんな人向けの記事です

  • ファイルやディレクトリのコピー方法を基礎から学びたい方
  • バックアップや複製作業を効率的に行いたい方
  • 権限やシンボリックリンクの扱いを理解したい方

Step 1cpコマンドの基本

cpコマンドは「copy」の略で、ファイルやディレクトリをコピーする基本的なコマンドです。

ターミナル
# ファイルをコピー
cp source.txt destination.txt

# 別のディレクトリにコピー
cp file.txt /home/user/backup/

# 複数ファイルをディレクトリにコピー
cp file1.txt file2.txt /backup/

# ワイルドカードで一括コピー
cp *.txt /backup/
cp *.log /var/log/archive/

基本構文: cp [オプション] コピー元 コピー先。コピー先がディレクトリの場合、元のファイル名でそのディレクトリ内にコピーされます。

Step 2ディレクトリのコピー

ディレクトリをコピーするには-r(再帰)オプションが必要です。

ターミナル
# ディレクトリを再帰的にコピー
cp -r source_dir/ destination_dir/

# 権限・タイムスタンプを保持してコピー
cp -rp project/ project_backup/

# すべての属性を保持(-a = -dR --preserve=all)
cp -a /var/www/html/ /backup/html/

# 上書き確認付きコピー
cp -ri source_dir/ destination_dir/

注意: -rオプションなしでディレクトリをコピーしようとするとエラーになります。また、コピー先に同名ファイルがあると確認なしで上書きされます。-iオプションで上書き確認を有効にしましょう。

Step 3よく使うオプション一覧

cpコマンドの主要なオプションとその使用場面を紹介します。

ターミナル
# 上書き確認
cp -i file.txt /backup/          # 上書き前に確認

# 上書きしない
cp -n file.txt /backup/          # 既存ファイルを上書きしない

# 更新されたファイルのみコピー
cp -u *.txt /backup/             # コピー先より新しい場合のみ

# 詳細表示
cp -v file.txt /backup/          # コピー内容を表示

# シンボリックリンクの処理
cp -d link.txt /backup/          # リンクをリンクとしてコピー
cp -L link.txt /backup/          # リンク先の実体をコピー

# バックアップを作成
cp --backup=numbered file.txt /backup/
オプション説明
-r, -Rディレクトリを再帰的にコピー
-i上書き前に確認
-n既存ファイルを上書きしない
-uコピー先より新しい場合のみコピー
-vコピー内容を詳細表示
-p権限・タイムスタンプを保持
-aすべての属性を保持(-dR --preserve=all)
-dシンボリックリンクを保持
-Lシンボリックリンクの実体をコピー
-f強制的に上書き

Step 4実践的な使用例

日常業務でよく使用されるcpコマンドの実践例を紹介します。

ターミナル
# 日付付きバックアップ
cp -a config.conf config.conf.$(date +%Y%m%d)

# プロジェクトの完全バックアップ
cp -a /var/www/html/ /backup/html_$(date +%Y%m%d)/

# 設定ファイルのバックアップ後に編集
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# 差分コピー(更新ファイルのみ)
cp -ruv source_dir/ backup_dir/

# 複数ファイルの一括コピー
cp -v *.{jpg,png,gif} /images/

# 権限を維持したシステムファイルのコピー
sudo cp -a /etc/apache2/ /backup/apache2/

大量ファイルのコピー: 大規模なコピーにはrsyncコマンドの方が効率的です。差分転送や進捗表示が可能で、中断後の再開もできます。