cp -fオプションの使い方|コピー先を強制的に上書きする方法を初心者向けに解説!
生徒
「Linuxでファイルをコピーしようとしたら『上書きしますか?』って聞かれました。自動で上書きする方法ってありますか?」
先生
「ありますよ。そのときは-fオプションを使えば、強制的に上書きできます。」
生徒
「強制ってちょっと怖いんですが、どういう意味ですか?」
先生
「怖がらなくて大丈夫です。cp -fは、コピー先に同じ名前のファイルがあった場合に、確認なしで上書きするという意味です。上書きしたくない場合は注意が必要ですね。」
1. cpコマンドとは?
Linuxのcpコマンドは、ファイルやフォルダ(ディレクトリ)をコピーするために使います。「コピー」とは、同じ内容のファイルを別の場所に複製することです。
たとえば、「document.txt」というファイルを「backup」フォルダにコピーするには、以下のように入力します。
cp document.txt backup/
このコマンドは、backupフォルダの中に、document.txtという同じ名前のファイルを作るという意味です。
2. 上書きの確認メッセージとは?
もしコピー先にすでに同じ名前のファイルがあると、Linuxは通常「上書きしてもよいですか?」と確認してきます。
たとえば以下のような状況です。
cp document.txt backup/
cp: overwrite 'backup/document.txt'?
このとき、キーボードで「y」と入力してEnterを押せば上書きされ、「n」と入力すればキャンセルされます。
ただし、毎回この確認が出るのは面倒なときもあります。そんなときに役立つのが-fオプションです。
3. cp -fの基本的な使い方
-fオプションをつけると、上書きの確認が出ずに強制的にコピー先のファイルを上書きします。
以下はその例です。
cp -f document.txt backup/
このように入力すると、すでにbackup/フォルダに同じ名前のdocument.txtがあっても、何も聞かれずに上書きされます。
4. cp -fを使うときの注意点
-fの「f」は「force(フォース=強制)」の意味です。そのため上書きされたファイルの内容は元に戻せません。
一度上書きしてしまうと、コピー前のファイルは消えてしまいます。大切なファイルを上書きしないように、慎重に使いましょう。
もし「上書きしてもいいか毎回確認したい」と思うなら、-iオプション(インタラクティブ)を使うとよいです。
5. -fと-iオプションの違い
-fと-iは、正反対の動作をします。
-f(force):確認なしで上書きする-i(interactive):上書き前に確認する
たとえば、-iを使った場合は次のようになります。
cp -i document.txt backup/
cp: overwrite 'backup/document.txt'?
このように、上書きするかどうかを聞いてくれるので、うっかりミスを防ぎたい人におすすめです。
6. cp -fの実行結果を確認してみよう
実際にファイルをコピーして、上書きされるかどうかを確認してみましょう。
まずは中身の違う2つのファイルを作ってみます。
echo "元の内容" > backup/document.txt
echo "新しい内容" > document.txt
それからコピーします。
cp -f document.txt backup/
では、backup/document.txtの中身を確認してみましょう。
cat backup/document.txt
新しい内容
このように、新しい内容で上書きされたことがわかります。
7. よくある使い方の組み合わせ
cp -fは、他のオプションと組み合わせて使うこともできます。
-r:フォルダごとコピーしたいとき-v:コピーしているファイル名を表示したいとき
たとえば、フォルダごと上書きコピーしつつ、コピーされたファイルを表示したいなら以下のようにします。
cp -rfv photos/ backup/
'photos/dog.jpg' -> 'backup/dog.jpg'
'photos/cat.jpg' -> 'backup/cat.jpg'
-fを使うことで、古いファイルを新しいファイルでスムーズに上書きコピーできます。
8. cp -fを使うときの安全対策
-fは便利な一方で、上書きミスが起きやすいので注意が必要です。
- 大事なファイルは先に
cpやmvでバックアップを取る - 本当に上書きしていいか、
lsコマンドなどで事前に確認する - 怖いときは
-iと併用してもOK(-fが優先されるので順番に注意)
失敗を防ぐには、事前の確認と習慣が大切です。