カテゴリ: Linuxコマンド集 更新日: 2025/12/16

cp -nオプションの使い方|既存ファイルを上書きしないコピー方法を初心者向けに解説!

cp -nオプション|既存ファイルを上書きしないコピー方法
cp -nオプション|既存ファイルを上書きしないコピー方法

先生と生徒の会話形式で理解しよう

生徒

「Linuxでファイルをコピーするときに、元のファイルを間違って上書きしてしまうのが心配です…」

先生

「そんなときは-nオプションを使うと便利ですよ。コピー先に同じファイルがある場合、上書きせずにそのままスキップしてくれるんです。」

生徒

「えっ、自動で上書きしないってことですか?」

先生

「その通りです。とても安全なコピー方法なので、初心者にもおすすめですよ。」

1. cpコマンドとは?

1. cpコマンドとは?
1. cpコマンドとは?

Linuxのcpコマンドは、ファイルやディレクトリをコピーするための基本的なコマンドです。たとえば、ファイルを別のフォルダに複製したいときに使います。

以下のように使います。


cp sample.txt backup/

このコマンドは、「sample.txt」を「backup」フォルダにコピーします。

ただし、「backup」フォルダにすでに同じ名前のファイルがあると、そのファイルは上書きされてしまいます

2. cp -nオプションとは?

2. cp -nオプションとは?
2. cp -nオプションとは?

-nオプションは「no-clobber(ノークラッバー)」の略で、すでにコピー先に同名ファイルがある場合は上書きせずにスキップする動作をしてくれます。

コマンドの例は次のとおりです。


cp -n sample.txt backup/

このコマンドでは、「backup」フォルダに「sample.txt」がすでに存在していれば、コピーされずにそのまま残ります

3. 実際の動作を見てみよう

3. 実際の動作を見てみよう
3. 実際の動作を見てみよう

まずは2つのファイルを準備してみましょう。


echo "古いデータ" > backup/sample.txt
echo "新しいデータ" > sample.txt

この状態で、-nオプションを使ってコピーします。


cp -n sample.txt backup/

次に中身を確認してみましょう。


cat backup/sample.txt
古いデータ

このように、古いファイルがそのまま残っていることがわかります。つまり、-nオプションによって上書きされなかったということです。

4. -nオプションが便利な場面

4. -nオプションが便利な場面
4. -nオプションが便利な場面

cp -nは、以下のような場面でとても役立ちます。

  • バックアップフォルダに大切なファイルがすでにあるとき
  • たくさんのファイルをコピーするとき、上書きミスを防ぎたいとき
  • 定期的にフォルダにコピーするが、毎回全部上書きしたくないとき

安全にファイルを扱いたいときは、まず-nを試してみるのが安心です。

5. cp -nと-i、-fの違いを知ろう

5. cp -nと-i、-fの違いを知ろう
5. cp -nと-i、-fの違いを知ろう

cpコマンドには他にも似た動きをするオプションがあります。

  • -f(force):強制的に上書きする
  • -i(interactive):上書き前に確認する
  • -n(no-clobber):既存ファイルは上書きしない

初心者が安全にファイルを扱うには、-i-nの使用がおすすめです。

自動で止めたいなら-n、都度聞かれたいなら-iという使い分けがポイントです。

6. cp -nと-v、-rの組み合わせ例

6. cp -nと-v、-rの組み合わせ例
6. cp -nと-v、-rの組み合わせ例

-nは他のオプションと組み合わせて使うこともできます。

  • -v(verbose):コピーされたファイル名を表示
  • -r(recursive):フォルダ全体を再帰的にコピー

たとえば次のように使えば、フォルダの中身をすでにあるファイルを上書きせずにコピーできます。


cp -rnv images/ backup/

この例では、imagesフォルダの中身をbackupフォルダにコピーし、既存ファイルはスキップされ、新しくコピーされたファイルだけが表示されます。

7. -nを使うときの注意点

7. -nを使うときの注意点
7. -nを使うときの注意点

-nオプションはとても便利ですが、以下の点に注意しましょう。

  • すでにあるファイルはコピーされないため、本当に新しいファイルだけコピーしたいときに使う
  • 上書きが必要な場面では-fを使うなど、目的に応じて選ぶことが大切
  • ファイル名の間違いに気づかないままコピーしないで終わることもある

-nは「上書きしたくない」という明確な目的があるときに、もっとも効果を発揮します。

まとめ

まとめ
まとめ

今回の記事では、Linuxでファイルやディレクトリをコピーする際に非常に役立つcp -nオプションについて、基本から実践的な使い方まで丁寧に解説してきました。cpコマンドはLinuxの基本操作の中でも使用頻度が高く、日常的なファイル管理やバックアップ作業、サーバー運用の現場でも欠かせない存在です。その中で-nオプションは、既存ファイルを上書きしない安全なコピー方法として、特に初心者にとって心強い機能となっています。

Linuxのcpコマンドは、何も指定しなければコピー先に同名ファイルが存在する場合に、そのファイルを上書きしてしまいます。この挙動を知らずに操作すると、大切な設定ファイルやバックアップデータを誤って失ってしまう可能性があります。cp -nオプションを使うことで、コピー先に同じ名前のファイルがある場合は自動的にスキップされ、元のファイルが保護されます。これはLinuxで安全に作業するうえで、非常に重要な考え方です。

cp -nは「no-clobber」という意味を持ち、まさに「壊さない」「上書きしない」コピーを実現します。バックアップフォルダにすでに存在するファイルを守りたい場合や、定期的にファイルを同期する場面では、この挙動が大きな安心につながります。特にログファイルや画像ファイル、設定ファイルなど、内容を簡単に復元できないファイルを扱うときには、cp -nを意識して使うことが重要です。

また、cp -nは-i-fといった他のオプションとの違いを理解することで、より適切に使い分けることができます。確認しながらコピーしたい場合は-i、強制的に上書きしたい場合は-f、そして「とにかく既存ファイルを守りたい」場合には-nという選択が基本になります。Linuxでは、目的に応じてオプションを選ぶ判断力がとても大切です。

さらに、cp -nは-r-vと組み合わせることで、より実用的なコピー操作が可能になります。ディレクトリを丸ごとコピーしつつ、既存ファイルはスキップし、どのファイルがコピーされたのかを確認する、といった操作も簡単に実現できます。以下は、一般ユーザーで安全にフォルダをコピーする代表的な例です。


cp -rnv images/ backup/
'images/photo1.jpg' -> 'backup/photo1.jpg'
'images/photo2.png' -> 'backup/photo2.png'

このように、cp -nを使えば、すでに存在するファイルを誤って上書きすることなく、新しいファイルだけをコピーできます。Linux初心者の方はもちろん、慎重な作業が求められるサーバー管理や業務システムの運用でも、cp -nは非常に信頼できる選択肢となります。

ただし、cp -nは「上書きされない」分、コピーされなかったことに気づきにくい場合もあります。そのため、コピー結果を確認したいときは-vオプションを併用したり、事前にlsコマンドでコピー先の状態を確認したりすることが大切です。Linuxでは、こうした一つ一つの確認作業が、トラブル防止につながります。

cp -nオプションは、派手さはありませんが、Linuxで安全にファイルを扱うための基本を支えてくれる存在です。今回学んだ内容を意識して使うことで、ファイル操作への不安が減り、より落ち着いてLinuxを扱えるようになるでしょう。

先生と生徒の振り返り会話

生徒「cp -nを使えば、コピー先にファイルがあっても上書きされないので、安心して作業できることが分かりました。」

先生「その通りです。Linuxでは一度上書きすると元に戻せないことが多いので、安全なオプションを選ぶ意識が大切ですね。」

生徒「-iや-fとの違いも理解できました。目的によって使い分けるのがポイントですね。」

先生「良い理解です。cpコマンドはオプション次第で挙動が大きく変わるので、場面に応じた選択が重要ですよ。」

生徒「バックアップを取るときは、まずcp -nを使ってみようと思います。」

先生「それはとても良い判断ですね。安全第一で操作することが、Linux上達への近道です。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

cp -nオプションとは何ですか?Linuxでファイルを上書きせずにコピーする方法が知りたいです。

cp -nオプションは、Linuxのcpコマンドにおいて「no-clobber(ノークラッバー)」の略で、コピー先に同じ名前のファイルがあった場合にそのファイルを上書きせずにスキップする機能です。既存のファイルを守りたいときにとても便利です。
関連記事:
カテゴリの一覧へ
新着記事
New1
テキスト・データ処理
grep -hオプションの使い方|ファイル名を表示せずに一致行だけを出力する方法
New2
ファイル・ディレクトリ操作
find -mindepthオプションの使い方を完全ガイド!検索の最小深さを指定して効率よくファイル検索
New3
ファイル・ディレクトリ操作
Linuxのlsコマンド-iオプション完全ガイド!初心者でもわかるi-node番号の表示方法
New4
ファイル・ディレクトリ操作
stat --dereferenceオプションの使い方を解説|-Lと同じようにシンボリックリンク先の情報を表示しよう
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
テキスト・データ処理
grepコマンドとは?Linuxで文字列を検索する基本をやさしく解説!
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
statコマンドとは?Linuxでファイルやディレクトリの詳細情報を確認する基本