cpでファイルをコピーする
直したら、元に戻せなくなった
設定ファイルを 1 行書き換えたらサービスが起動しなくなり、元がどう書いてあったか思い出せない。この事故は、書き換える前に 1 行打っておくだけで防げます。
ターミナル
cp /etc/hostname /tmp/hostname.bakcp はコピー元とコピー先を並べて書くだけです。元のファイルはそのまま残り、指定した名前で複製ができます。編集の前に控えを取るというのは、運用のいちばん基本の動作です。
ディレクトリは -r が要る
ターミナル
cp /etc/skel /tmp/skel_backup
# cp: -r not specified; omitting directory '/etc/skel'ファイルと同じつもりでディレクトリを渡すと、こう言われて何も起きません。中身ごと複製するには -r を付けます。
ターミナル
cp -r /etc/skel /tmp/skel_backupこれで /etc/skel の下にあるものが丸ごとコピーされます。ひとつ注意があって、コピー先のディレクトリがすでに存在する場合は、その中に入れ子で作られます。思っていたのと違う場所にできることがあるので、コピーのあとは ls で場所を確かめてください。
何も聞かずに上書きする
cp は、コピー先に同じ名前のファイルがあっても、確認せずに上書きします。消えるのはコピー先の中身なので、戻す手段はありません。
ターミナル
cp -i /etc/hostname /tmp/hostname.bak
# cp: overwrite '/tmp/hostname.bak'?不安なときは -i を付けます。上書きが起きる場合だけ確認を求めてくるので、意図しない相手を潰しかけていることに気づけます。権限や更新日時ごとそのまま複製したいときは -p を足します。バックアップとして取る控えなら、-p を付けておくと元の状態がより正確に残ります。
変更する前にコピーを取る。取り消しの効かない操作の前に、戻れる場所を 1 つ作っておく。この習慣が、どんなオプションを覚えるよりも効きます。
課題
- cp を使う
- コピー後の中身が apple