ディレクトリをまるごとコピーする簡単な方法:cpコマンドの使い方とオプション解説

コマンドリファレンス

ディレクトリをまるごとコピーする必要がある場面は、多くのユーザーが直面する日常的な作業です。例えば、バックアップを取る場合や移動コピーでディレクトリ構成を再利用する場合などです。ここでは、Unix系OSでよく使われるcpコマンドを使って、ディレクトリをまるごとコピーする方法をわかりやすく解説します。

cpコマンド基礎

cpコマンドは、ファイルやディレクトリをコピーするためのコマンドです。基本的な構文は以下の通りです。

cp [オプション] コピー元 コピー先

この基本構文により、一つのファイルまたは複数のファイルを一度にコピーすることができます。しかし、ディレクトリをコピーしたい場合には、特別なオプションが必要です。

ディレクトリをコピーする:-rオプション

cpコマンドでディレクトリをコピーする際には、-r(または--recursive)というオプションを使用します。このオプションは、再帰的にディレクトリとそのすべての含まれるサブディレクトリやファイルをコピーすることを可能にします。

基本的な使用方法

以下に、ディレクトリをコピーするための基本的なコマンド例を示します。

cp -r ソースディレクトリ名 目標ディレクトリパス

例えば、/home/user/documentsディレクトリを/backupにコピーする場合は以下のように入力します:

cp -r /home/user/documents /backup

このコマンドはdocumentsディレクトリ全体を/backupディレクトリ内にコピーします。

よく使われるオプション

-rオプション以外にも、cpコマンドにはいくつかの便利なオプションがあります。これらを組み合わせることで、コピー作業をより効果的に行うことができます。

-i:インタラクティブモード

-i(または--interactive)オプションを使うと、コピー先に同じ名前のファイルやディレクトリが存在する場合に上書きを確認してくれます。

cp -ri ソースディレクトリ名 目標ディレクトリパス

上書きされる可能性のあるファイルに対して、上書きの許可を求めるプロンプトが表示されるため、安全性が向上します。

-u:更新時のみコピー

-u(または--update)オプションは、コピー先に存在するファイルのタイムスタンプがコピー元よりも新しければ、新しいファイルのみコピーします。これにより、無駄なコピーを防ぐことができます。

cp -ru ソースディレクトリ名 目標ディレクトリパス

-v:詳細出力

-v(または--verbose)オプションを使うと、コピーするファイルについての情報を詳細に出力するため、進捗を確認しやすくなります。

cp -rv ソースディレクトリ名 目標ディレクトリパス

これにより、作業内容をリアルタイムで確認でき、問題が発生した場合でも対応がしやすくなります。

複数のディレクトリをコピー

複数のディレクトリを一度にコピーする必要がある場合もあります。この場合、コマンドに複数のソースディレクトリを指定することができます。例えば:

cp -r /home/user/documents /home/user/photos /backup

これにより、documentsphotosの両ディレクトリが/backupにコピーされます。

コピーの注意点と制限

cpコマンドでディレクトリをコピーする際にはいくつかの注意点があります。以下にいくつか挙げます:

  • シンボリックリンク:デフォルトでは、-rオプションでコピーしてもシンボリックリンクのリンク先がコピーされるのではなくリンク自体がコピーされます。リンク先をコピーしたい場合は-Lオプションを使用します。

  • ディスク容量:コピーには当然ながらストレージが必要ですので、コピー先に十分な空き容量があるか確認してください。

  • パーミッション:コピー元とコピー先のパーミッションが異なる場合、コピー後の動作に影響が生じることがあります。-pオプションを追加して、ファイル属性(モード、所有者、タイムスタンプ)を保持することもできます。

まとめ

cpコマンドと適切なオプションを活用すれば、ディレクトリを効率的にまるごとコピーすることができます。-rオプションで再帰的コピーを行い、-i-uなどのオプションを組み合わせることで、作業の効率化とデータの安全性を同時に高めることが可能です。また、ディスク容量やパーミッションといった基本的な点に注意しつつ、計画的に作業を進めましょう。これで、日常的なファイル管理タスクをよりスムーズに実行できます。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント