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コマンドの方が効率的です。差分転送や進捗表示が可能で、中断後の再開もできます。