cp -nオプションの使い方|既存ファイルを上書きしないコピー方法を初心者向けに解説!
生徒
「Linuxでファイルをコピーするときに、元のファイルを間違って上書きしてしまうのが心配です…」
先生
「そんなときは-nオプションを使うと便利ですよ。コピー先に同じファイルがある場合、上書きせずにそのままスキップしてくれるんです。」
生徒
「えっ、自動で上書きしないってことですか?」
先生
「その通りです。とても安全なコピー方法なので、初心者にもおすすめですよ。」
1. cpコマンドとは?
Linuxのcpコマンドは、ファイルやディレクトリをコピーするための基本的なコマンドです。たとえば、ファイルを別のフォルダに複製したいときに使います。
以下のように使います。
cp sample.txt backup/
このコマンドは、「sample.txt」を「backup」フォルダにコピーします。
ただし、「backup」フォルダにすでに同じ名前のファイルがあると、そのファイルは上書きされてしまいます。
2. cp -nオプションとは?
-nオプションは「no-clobber(ノークラッバー)」の略で、すでにコピー先に同名ファイルがある場合は上書きせずにスキップする動作をしてくれます。
コマンドの例は次のとおりです。
cp -n sample.txt backup/
このコマンドでは、「backup」フォルダに「sample.txt」がすでに存在していれば、コピーされずにそのまま残ります。
3. 実際の動作を見てみよう
まずは2つのファイルを準備してみましょう。
echo "古いデータ" > backup/sample.txt
echo "新しいデータ" > sample.txt
この状態で、-nオプションを使ってコピーします。
cp -n sample.txt backup/
次に中身を確認してみましょう。
cat backup/sample.txt
古いデータ
このように、古いファイルがそのまま残っていることがわかります。つまり、-nオプションによって上書きされなかったということです。
4. -nオプションが便利な場面
cp -nは、以下のような場面でとても役立ちます。
- バックアップフォルダに大切なファイルがすでにあるとき
- たくさんのファイルをコピーするとき、上書きミスを防ぎたいとき
- 定期的にフォルダにコピーするが、毎回全部上書きしたくないとき
安全にファイルを扱いたいときは、まず-nを試してみるのが安心です。
5. cp -nと-i、-fの違いを知ろう
cpコマンドには他にも似た動きをするオプションがあります。
-f(force):強制的に上書きする-i(interactive):上書き前に確認する-n(no-clobber):既存ファイルは上書きしない
初心者が安全にファイルを扱うには、-iか-nの使用がおすすめです。
自動で止めたいなら-n、都度聞かれたいなら-iという使い分けがポイントです。
6. cp -nと-v、-rの組み合わせ例
-nは他のオプションと組み合わせて使うこともできます。
-v(verbose):コピーされたファイル名を表示-r(recursive):フォルダ全体を再帰的にコピー
たとえば次のように使えば、フォルダの中身をすでにあるファイルを上書きせずにコピーできます。
cp -rnv images/ backup/
この例では、imagesフォルダの中身をbackupフォルダにコピーし、既存ファイルはスキップされ、新しくコピーされたファイルだけが表示されます。
7. -nを使うときの注意点
-nオプションはとても便利ですが、以下の点に注意しましょう。
- すでにあるファイルはコピーされないため、本当に新しいファイルだけコピーしたいときに使う
- 上書きが必要な場面では
-fを使うなど、目的に応じて選ぶことが大切 - ファイル名の間違いに気づかないままコピーしないで終わることもある
-nは「上書きしたくない」という明確な目的があるときに、もっとも効果を発揮します。