cp コマンドとは?
cp コマンドは、LinuxやUnix系OSでファイルやディレクトリをコピーするためのコマンドです。
単純なファイルコピーから、属性を保持したアーカイブコピー、ユーザー確認付きコピーまで多様なオプションが用意されています。
基本構文
cp [オプション] コピー元 コピー先
主なオプションと解説
-a: アーカイブモード(-dR –preserve=all 相当)-f: コピー先ファイルを強制的に上書き-i: 上書き前に確認(”overwrite ‘file’? ” など)-l: ハードリンクを作成(コピーではない)-L: シンボリックリンクのリンク先をコピー-n: 既存ファイルを上書きしない-p: 属性(所有者、権限、タイムスタンプ)を保持-r/-R: ディレクトリを再帰的にコピー-s: シンボリックリンクとしてコピー-t DIR: コピー先ディレクトリを明示-u: コピー元が新しい場合のみコピー-v: コピー中のファイル名を表示
使用例と出力サンプル
ファイルをコピー
$ cp file1.txt file2.txt
ディレクトリを再帰的にコピー
$ cp -R dir1 dir2
上書き確認付きでコピー
$ cp -i file1.txt file2.txt
overwrite 'file2.txt'? y
属性を保持してコピー
$ cp -p file1.txt file2.txt
コピー中のファイル名を表示
$ cp -v file1.txt file2.txt
'file1.txt' -> 'file2.txt'
シンボリックリンクをそのままコピー(リンクとして)
$ cp -d symlink targetlink
よくあるエラーと対処
| エラー例 | 原因 | 解決策 |
|---|---|---|
| Permission denied | 書き込み権限がない | sudo で実行 or chmod/chown |
| cannot overwrite directory | ディレクトリに -r オプションがない | -r 付きで実行 |
| overwrite without prompt | 上書き確認なし | -i を使用して確認付きに |
まとめ
cpは強力かつ柔軟なコピーコマンド- 属性を保持したい場合は
-aや-p - ディレクトリやリンクの扱いには
-r,-L,-dなどを活用
参考リンク
- https://man7.org/linux/man-pages/man1/cp.1.html
- https://phoenixnap.com/kb/cp-command