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の働きです。