No.019ファイルとフォルダ
cp
シーピー・ファイルコピー
ファイルやディレクトリをコピーします。バックアップ、テンプレート複製、設定ファイルの退避などで日常的に使います。
答えよく使う形
注意上書き事故の危険があります。
$ printf "%sn" "demo" > a.txt
cp a.txt b.txt
cat b.txt
demo
$ cp -a /etc/hosts hosts.bak
stat hosts.bak
属性情報の表示
$ cp file1 file2
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中で30 コマンド・12 駅め / 30LPIC-1・5 駅め / 106
どんなコマンド?
設定ファイルの退避、配布用テンプレートの複製、作業前バックアップ、ディレクトリ全体の複写をしたい時に使います。
cpは、ファイルやディレクトリの内容を別の場所へ複製するための基本コマンドです。単一ファイルのコピーだけでなく、ディレクトリ全体の再帰的コピー、属性保持付き複製、上書き確認付きコピーなど、実務で使う場面は非常に多くあります。
単純に見えて重要なのは、上書き、属性保持、シンボリックリンクの扱いです。設定ファイルを退避したつもりが属性を失っていた、ディレクトリを丸ごとコピーしたつもりが再帰オプションを忘れた、といった事故は珍しくありません。
GNU系では-aが実務上便利で、再帰コピーと属性保持をまとめて行えます。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ cp
使用例と実行結果
行を押すとコピーできます。
demo
属性情報の表示
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 2
ゲームで確かめる
つまずいたとき
ディレクトリをコピーしたら失敗した
原因再帰指定が不足しています。
こうするディレクトリ全体ならcp -rまたはcp -aを使います。
退避したはずなのに権限や時刻が変わった
原因属性保持を指定していません。
こうする必要に応じてcp -aやcp -pを使います。
終わったときの数(戻り値)
$ echo $?
- 0要求したコピー処理が成功しました。
- >0入力ファイル不在、権限不足、上書き拒否などで失敗しました。
気をつけることと入れ方
上書き事故の危険があります。特に同名ファイルへのコピー、再帰コピー、権限の強い場所への操作では、先にlsやstatで対象を確認すると安全です。
たいていの Linux に最初から入っています(coreutils)。
環境による違い
POSIXで基本機能は定義されていますが、-aなど便利なオプションはGNU系拡張です。BSD系では細部が異なることがあります。
確かめた環境Debian GNU/Linux / 13 / GNU coreutils 9.7 / Bash 5.2.372026-04-09 に確認
よくある質問
cp -rとcp -aはどう違いますか。
-rは再帰コピー中心、-aは再帰に加えて属性保持も重視するGNU系の便利指定です。
安全に上書きを避けるにはどうすればよいですか。
cp -iで確認を入れるか、先に別名退避してから作業します。
資格試験では
- LinuC レベル1大事1.02 ファイル・ディレクトリの操作と管理
- LPIC-1大事104.7 システムファイルの検索と正しい配置
- 共通基礎大事Linuxコマンド基礎
cp を最後まで読みました。
Linux コマンド辞典に戻る15 / 144