cp -rオプションの使い方|-Rと同じくディレクトリを再帰的にコピーする方法を初心者向けに解説!
生徒
「Linuxでフォルダごとコピーしたいんですが、普通のcpコマンドじゃうまくいかないんです…」
先生
「フォルダをまるごとコピーしたいなら、-rオプションを使う必要がありますよ。」
生徒
「-rってなんですか?それって安全なんですか?」
先生
「大丈夫です。-rは “再帰的に” という意味で、フォルダの中身を全部たどってコピーしてくれる便利なオプションです。」
生徒
「それなら安心ですね!詳しく教えてください!」
1. cpコマンドとは?
cpコマンドは、Linuxでファイルやディレクトリをコピーするための基本的なコマンドです。コピーとは、元のデータをそのまま別の場所に複製することを意味します。
たとえば、「写真.jpg」というファイルを「バックアップ」というフォルダにコピーするには以下のようにします。
cp 写真.jpg バックアップ/
ただし、このままだとフォルダ(ディレクトリ)はコピーできません。なぜなら、フォルダにはたくさんのファイルやフォルダが入っていて、単純なコピーでは中身までコピーされないからです。
2. -rオプションとは?
-rオプションは、「再帰的(recursive)」にコピーするという意味を持ちます。つまり、指定したフォルダの中にあるすべてのファイルやサブフォルダも含めて、まるごとコピーしてくれます。
これは、-R(大文字のR)でも同じ動作をします。小文字と大文字、どちらでも問題ありません。
3. cp -rの使い方|フォルダごとコピーする
たとえば「images」というフォルダを「backup」フォルダの中にコピーしたい場合、次のように入力します。
cp -r images backup/
このコマンドは、imagesというフォルダとその中身すべてを、backupフォルダの中にコピーするという意味になります。
コマンドを実行すると、次のような結果になります。
ls backup
images
さらにその中を見てみましょう。
ls backup/images
cat.jpg dog.jpg logo.png
中身もそのままコピーされていることがわかります!
4. よくある間違い|-rをつけ忘れた場合
もし-rをつけずに、フォルダをコピーしようとするとエラーになります。
cp images backup/
cp: -r not specified; omitting directory 'images'
このエラーメッセージは、「-rを指定していないので、imagesフォルダはスキップします」という意味です。
初心者がよくつまずくポイントなので、しっかり覚えておきましょう!
5. cp -rと他のコマンドの違い
cp -rと似たような機能を持つコマンドもあります。違いを見てみましょう。
- mv:移動(コピーして元を削除)します。コピーではなく移動したい場合に使用。
- rsync -a:フォルダを効率的に同期・コピーします。大きなデータやリモートのコピーに向いています。
- tar -cf:フォルダを圧縮ファイルとしてまとめて保存します。コピーというより「保存」目的。
ただし、cp -rは一番シンプルで、初心者が日常的に使いやすいコマンドです。
6. -rオプションとよく使う組み合わせ例
さらに便利に使うために、-rと他のオプションを組み合わせることもあります。
-v(verbose): コピー中のファイル名を表示する-u(update): 更新されたファイルのみコピーする
たとえば、フォルダ全体をコピーしつつ、進行状況を見たいときは以下のようにします。
cp -rv images backup/
'images/cat.jpg' -> 'backup/images/cat.jpg'
'images/dog.jpg' -> 'backup/images/dog.jpg'
'images/logo.png' -> 'backup/images/logo.png'
7. 補足:rは「recursive(再帰)」の略
recursive(再帰)という言葉は難しく聞こえるかもしれませんが、簡単に言えば「中の中の中までたどっていく」という意味です。
フォルダの中にさらにフォルダがある場合、それも含めてコピーしてくれるのが-rの働きです。
まとめ
cp -rオプションはディレクトリコピーの基本中の基本
本記事では、Linuxコマンドの中でも非常に重要なcpコマンドと、その中でもディレクトリコピーに必須となるcp -rオプションについて解説しました。 Linux初心者の方にとって、ファイルコピーとディレクトリコピーの違いは最初につまずきやすいポイントですが、cp -rオプションを理解することで、その問題は簡単に解決できます。 cp -rは再帰的コピーという仕組みを使い、フォルダの中にあるファイルやサブディレクトリをすべて含めてコピーすることができるため、実務でも頻繁に使われる基本操作です。 Linux環境では、バックアップ作業やデータ移行、設定ファイルの複製など、ディレクトリ単位でのコピーが必要になる場面が非常に多く、そのたびにcp -rが活躍します。 そのため、cp -rオプションはLinuxコマンドの中でも最初に確実に身につけておきたい重要な知識のひとつです。
再帰的コピーの仕組みを理解することが重要
cp -rオプションの本質は再帰的処理にあります。 再帰的とは、フォルダの中にあるフォルダ、その中のフォルダ、さらにその中のフォルダといったように、階層構造をすべてたどりながら処理を行うことを意味します。 Linuxのディレクトリ構造はツリー状になっているため、この再帰的な処理がなければ、完全なコピーは実現できません。 cp -rを使うことで、ユーザーは複雑な階層構造を意識することなく、一つのコマンドでディレクトリ全体をコピーすることができます。 この仕組みを理解しておくことで、他のLinuxコマンドにおける再帰処理の理解にもつながります。
cp -r project backup/
ls backup/
project
このように、ディレクトリごとコピーされることが確認できます。
-rを忘れるとエラーになる理由を理解する
cpコマンドはデフォルトではファイルのみを対象としており、ディレクトリをコピーする機能は持っていません。 そのため、-rオプションを指定しない場合、ディレクトリはコピー対象外として扱われ、エラーになります。 この挙動はLinuxの設計思想に基づいており、意図しない大量コピーや誤操作を防ぐための仕組みです。 初心者の方はエラーが出ると焦ってしまいがちですが、その意味を理解することで、正しい対処ができるようになります。
cp images backup/
cp: -r not specified; omitting directory 'images'
このエラーは非常によく見るため、覚えておくと安心です。
実務でよく使うオプションとの組み合わせ
cp -rは単体でも便利ですが、他のオプションと組み合わせることでさらに強力になります。 特に-vオプションを使えばコピーの進行状況を確認でき、-uオプションを使えば更新されたファイルのみコピーすることができます。 これにより、大規模なディレクトリコピーでも効率的かつ安全に作業を進めることができます。 Linuxサーバー運用や開発環境の構築では、このようなオプションの組み合わせが非常に重要になります。
cp -rv project backup/
'project/index.html' -> 'backup/project/index.html'
'project/style.css' -> 'backup/project/style.css'
実際の現場では、このように進行状況を確認しながら作業することが多いです。
他のコマンドとの違いを理解することで応用力が身につく
cp -rと似た機能を持つコマンドには、mvやrsync、tarなどがありますが、それぞれ目的が異なります。 cp -rは単純なコピーに特化しており、初心者でも扱いやすいのが特徴です。 一方で、大量データの同期や差分コピーが必要な場合はrsyncを使うなど、用途に応じた使い分けが重要になります。 まずはcp -rをしっかり理解し、その後に応用的なコマンドへステップアップするのが効率的な学習方法です。
Linux初心者が意識すべき安全な操作方法
cp -rは便利な反面、大量のファイルを一度にコピーするため、操作ミスが大きな影響を与える可能性があります。 特にコピー先を間違えると、意図しない場所に大量のデータが作成されてしまうことがあります。 そのため、実行前には必ずコピー元とコピー先を確認する習慣をつけることが重要です。 また、必要に応じてlsコマンドで結果を確認しながら作業を進めることで、安全性を高めることができます。
ls backup/project
index.html style.css images
このように結果を確認することで、正しくコピーされているかを把握できます。
cp -rを使いこなすことでLinux操作が一段レベルアップする
cp -rオプションは単なるコピーコマンドの拡張ではなく、Linuxのファイル管理を理解する上で重要なステップです。 ディレクトリ構造やファイルの階層を意識しながら操作することで、より深い理解につながります。 初心者の方でも、実際にコマンドを何度も試しながら操作することで、自然と使いこなせるようになります。 Linuxの基本操作を確実に身につけるためにも、cp -rを日常的に使い、実践を通じて理解を深めていきましょう。
生徒
「cp -rを使えばフォルダごとコピーできる理由がよく分かりました。」
先生
「再帰的に処理するという考え方がポイントでしたね。」
生徒
「-rを忘れるとエラーになるのも納得です。」
先生
「Linuxは安全性を重視しているので、明示的に指定する必要があるのです。」
生徒
「-vや-uと組み合わせるのも便利そうですね。」
先生
「実務では組み合わせて使うことが多いですよ。」
生徒
「これからはコピー先もちゃんと確認して使います。」
先生
「その意識がとても大切です。安全に操作していきましょう。」