cp コマンドは、ファイルやディレクトリをコピー するコマンドです。
バックアップの作成、設定ファイルの複製、ディレクトリごとのコピーなどに広く使われます。
bashについて、基本的な考え方や使い方については bash から参照ください。
構文(Syntax)
cp [オプション] コピー元 コピー先
cp [オプション] コピー元... コピー先ディレクトリ
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 通常コピー(既存ファイルは上書き) | cp file1.txt file2.txt |
-i | 上書き前に確認 | cp -i file1.txt file2.txt |
-f | 強制的に上書き | cp -f file1.txt file2.txt |
-n | 既存ファイルを上書きしない | cp -n file1.txt file2.txt |
-r | ディレクトリを再帰的にコピー | cp -r dir1 dir2 |
-a | アーカイブモード(属性を保持しつつ再帰コピー、-dpR 相当) | cp -a dir1 dir2 |
-p | パーミッション・所有者・タイムスタンプを保持 | cp -p file1.txt backup.txt |
-u | コピー元が新しい場合のみ上書き | cp -u file1.txt file2.txt |
-v | コピーするファイルを表示 | cp -v file1.txt file2.txt |
-l | ハードリンクとしてコピー | cp -l file1.txt link.txt |
-s | シンボリックリンクとしてコピー | cp -s file1.txt symlink.txt |
--parents | ディレクトリ階層ごとコピー | cp --parents src/dir/file.txt /tmp |
実行例
ファイルをコピー
cp file.txt backup.txt
上書き前に確認
cp -i file.txt backup.txt
出力例:
cp: overwrite 'backup.txt'? y
ディレクトリを再帰的にコピー
cp -r dir1 dir2
属性を保持してコピー(バックアップ向け)
cp -a /etc /backup
更新されたファイルのみコピー
cp -u report.txt /shared/
コピー内容を表示しながら実行
cp -v file.txt backup.txt
出力例:
'file.txt' -> 'backup.txt'
ディレクトリ階層を保持してコピー
cp --parents src/config/app.conf /tmp/
コピー先:
/tmp/src/config/app.conf
エラー例(ディレクトリコピー時に -r を忘れる)
cp dir1 dir2
出力例:
cp: -r not specified; omitting directory 'dir1'
関連コマンド
mv: ファイルやディレクトリを移動(またはリネーム)rsync: 高機能な同期・コピーコマンド(差分コピー対応)install: ファイルコピー+パーミッション設定
備考
-aオプションは「完全なバックアップコピー」を作りたいときによく使われます。- シンボリックリンクやハードリンクを保持する場合は
-aか-dオプションが必要です。 - 巨大なディレクトリをコピーする場合は
rsyncの方が効率的です。
参考
- manページ: man7.org cp(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント