cpコマンドの使い方:ファイル・ディレクトリをコピーする
cpは、ファイルやディレクトリをコピーするコマンドです。設定ファイルを書き換える前のバックアップ作成など、運用でも頻繁に使います。
cpのよく使う形
実務や学習で登場しやすい使い方を、そのまま入力できる形でまとめました。
| コマンド例 | 内容 |
|---|---|
cp a.txt b.txt | a.txtをb.txtという名前でコピー |
cp a.txt /tmp/ | a.txtを/tmpディレクトリの中へコピー |
cp -r dir1 dir2 | ディレクトリを中身ごとコピー(-rが必要) |
cp -p a.txt b.txt | 所有者・権限・更新日時を保ったままコピー |
cp -i a.txt b.txt | コピー先に同名ファイルがあるとき、上書き前に確認する |
cp -a dir1 dir2 | 属性を保持し再帰的にコピー(バックアップ向き) |
cpの主なオプション
| オプション | 意味 |
|---|---|
-r | ディレクトリごとコピー |
-i | 上書き確認 |
-v | 詳細表示 |
-p | 属性を保持 |
-u | 更新分のみコピー |
-n | 上書きしない |
-f | 強制上書き |
-a | 属性を保持し再帰的にコピー |
cpの実行例と結果の読み方
user@linux-study:~$ cp -r projects projects_backup
user@linux-study:~$ ls
projects projects_backup
cp -rでprojectsディレクトリを中身ごとprojects_backupという名前でコピーしています。-rを付けないとディレクトリはコピーできずエラーになります。
練習用ターミナルでは、cpをブラウザ上で安全に試せます。
cpを使うときの注意点
コピー先に同名のファイルがあると、確認なしで上書きされます。大事なファイルのときは-iを付けるか、-nで上書きしない指定にします。
設定ファイルを編集する前は、cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakのように別名でコピーしておくと、戻したいときに役立ちます。
cpに関するよくある質問
ディレクトリをコピーするとエラーになるのは?
ディレクトリのコピーには-r(再帰)が必要です。付け忘れると「-r not specified; omitting directory」と表示されます。
コピーしても更新日時が変わるのは?
通常のコピーは新しいファイルとして作られるため、更新日時はコピーした時刻になります。-pや-aを使うと元の日時を保てます。
関連ページ
cpが登場する章:初級 第4章