カテゴリ: Linuxコマンド集 更新日: 2026/04/03

cp --parentsオプションの使い方|ディレクトリ構造を保持してコピーする方法を完全解説!

cp --parentsオプション|ディレクトリ構造を保持してコピーする
cp --parentsオプション|ディレクトリ構造を保持してコピーする

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

生徒

「Linuxでファイルをコピーするとき、フォルダの構造ごとコピーしたいんですけど、うまくいきません……」

先生

「それなら、cpコマンドの--parentsオプションを使うと便利ですよ。ディレクトリ構造をそのまま保ってコピーできます。」

生徒

「えっ!?普通にコピーするのとは違うんですか?」

先生

「そうなんです。普通のコピーではディレクトリ構造は無視されますが、--parentsを使えば元のパスを再現したままコピーされるんです。具体例を見てみましょう!」

1. cpコマンドの基本をおさらい

1. cpコマンドの基本をおさらい
1. cpコマンドの基本をおさらい

cpコマンドは、Linuxでファイルやディレクトリをコピーするときに使う、基本的なコマンドです。

例えば、次のように使えばファイルをコピーできます。


cp file.txt /home/user/backup/

この場合、単純にfile.txtだけがコピーされます。もしfile.txtがサブディレクトリ内にあっても、そのディレクトリ構造まではコピーされません。

2. --parentsオプションとは?

2. --parentsオプションとは?
2. --parentsオプションとは?

--parentsオプションを付けると、コピー元のディレクトリ構造をそのままコピー先に再現できます。

「フォルダの中にあるファイルを、同じフォルダ構造ごと別の場所に保存したい」というときに非常に便利です。

たとえば、次のような構成があるとします。


project/doc/manual.txt

これを単にコピーするとこうなります。


cp project/doc/manual.txt /tmp/

すると/tmpの中にはファイルだけが入ります。project/doc/というフォルダ構造は消えてしまいます。

ですが、--parentsを使えば、以下のようにフォルダ構造も含めてコピーされます。


cp --parents project/doc/manual.txt /tmp/

この結果、/tmp/project/doc/manual.txt という形で保存されます。

3. 実際に試してみよう!

3. 実際に試してみよう!
3. 実際に試してみよう!

まず、ディレクトリとファイルを作ってみましょう。


mkdir -p sample/notes
echo "メモの内容" > sample/notes/todo.txt

その後、/tmpに構造ごとコピーします。


cp --parents sample/notes/todo.txt /tmp/

コピー後に確認してみましょう。


ls /tmp/sample/notes/
todo.txt

このように、元のフォルダ階層がそのまま再現されています!

4. よくある失敗例と注意点

4. よくある失敗例と注意点
4. よくある失敗例と注意点

--parents絶対パスではなく、指定したパスの中で相対的な部分だけを保持します。

つまり、次のような絶対パスを使っても……


cp --parents /home/user/sample/notes/todo.txt /tmp/

この場合は、/tmp/home/user/sample/notes/todo.txtのようになってしまうので注意が必要です。

基本的には、現在のディレクトリ(カレントディレクトリ)からの相対パスで指定するのが理想です。

5. -rや-pオプションと組み合わせて便利に使おう

5. -rや-pオプションと組み合わせて便利に使おう
5. -rや-pオプションと組み合わせて便利に使おう

cpには他にも便利なオプションがあります。--parentsとよく一緒に使われるのが以下の2つです。

  • -r(再帰的にコピー)
  • -p(タイムスタンプや権限も維持)

例えば、ディレクトリごとコピーして、しかも構造と属性を保持したいときは以下のようにします。


cp -rp --parents sample/notes /tmp/

このコマンドで、sample/notesディレクトリ全体が、時間情報やパーミッションもそのままに、構造ごと/tmp/にコピーされます。

6. rsyncコマンドとの違い

6. rsyncコマンドとの違い
6. rsyncコマンドとの違い

Linuxでファイルやフォルダをコピーする方法はcp以外にもあります。代表的なのがrsyncです。

rsyncは、差分コピーやリモート転送にも対応しており、多機能なコマンドです。ただし、初心者には少し難しい面もあります。

cp --parentsは「簡単にディレクトリ構造を再現してコピーしたい」ときにとても便利なので、初学者にはcpの方がわかりやすく安全です。

7. 応用:複数ファイルをまとめてコピーする

7. 応用:複数ファイルをまとめてコピーする
7. 応用:複数ファイルをまとめてコピーする

複数のファイルをそれぞれのパス構造を保ったままコピーすることも可能です。


cp --parents dir1/file1.txt dir2/file2.txt /tmp/

このようにすれば、/tmp/dir1/file1.txt/tmp/dir2/file2.txtが再現されます。

多くのサブディレクトリを含むプロジェクトなどでも、個別にフォルダ構成を壊さずにコピーできるので、整理されたバックアップにも役立ちます。

まとめ

まとめ
まとめ

cpコマンドとparentsオプションの重要ポイント

今回はLinuxの基本コマンドであるcpコマンドの中でも、ディレクトリ構造を維持してコピーできるparentsオプションについて詳しく解説しました。 通常のコピー操作ではファイル単体だけがコピーされるため、元のフォルダ構成が失われてしまうことがよくあります。 しかしparentsオプションを活用することで、元のパス構造をそのまま再現できるため、バックアップや構成管理の効率が大きく向上します。

特に複雑なディレクトリ構造を持つプロジェクトや、ログファイルの整理、設定ファイルの保管などにおいては非常に有効です。 システム管理者だけでなく、初心者の方でも簡単に扱えるため、Linux操作のスキルアップにもつながります。

実務で役立つ使い方の整理

実際の現場では、単純なコピーよりも構造を維持したコピーが求められるケースが多くあります。 例えばログ収集や設定ファイルのバックアップ、特定ファイルのみの抽出コピーなどが代表的です。 そのような場面ではparentsオプションが非常に役立ちます。


cp --parents logs/app/error.log /backup/
backup/logs/app/error.log

このように元のディレクトリ構造をそのまま維持した状態でコピーされるため、後からファイルの場所を把握しやすくなります。 特に大規模なシステムでは、ファイルの位置情報が非常に重要になるため、この機能は欠かせません。

オプションの組み合わせでさらに便利に

parentsオプションは単体でも便利ですが、他のオプションと組み合わせることでさらに強力になります。 再帰コピーを行うrオプションや、属性を保持するpオプションと併用することで、より実践的な運用が可能になります。


cp -rp --parents project/config /backup/
backup/project/config

このようにディレクトリ全体を構造ごとコピーしつつ、権限やタイムスタンプも維持できます。 サーバ移行や環境複製などでも活躍する重要なテクニックです。

よくあるミスと対策

初心者がつまずきやすいポイントとして、絶対パスの扱いがあります。 絶対パスをそのまま指定すると、不要な階層までコピーされてしまうことがあります。 そのため基本的には相対パスを利用することが推奨されます。


cp --parents ./data/file.txt /tmp/
tmp/data/file.txt

このように現在のディレクトリを基準にしたパス指定を行うことで、意図しない階層のコピーを防ぐことができます。

まとめのポイント整理

  • cpコマンドはLinuxで最も基本的なコピーコマンド
  • parentsオプションでディレクトリ構造を維持できる
  • 相対パスを使うことで安全に操作できる
  • rやpオプションと組み合わせると実務で便利
  • バックアップや構成管理に最適
先生と生徒の振り返り会話

生徒

cpコマンドって単純にコピーするだけだと思っていましたが、こんなに便利な使い方があるんですね。 特にフォルダ構造をそのままコピーできるのは驚きでした。

先生

そうですね。parentsオプションは地味ですが、とても実用的です。 特にファイル管理やバックアップの場面では欠かせない機能ですよ。

生徒

これまでコピーしたあとに手動でフォルダを作っていたので、かなり効率が悪かった気がします。

先生

その手間を省けるのがこのオプションの強みです。 しかもコマンド一つで再現できるので、作業ミスも減らせます。

生徒

相対パスで指定するのがポイントなんですね。 絶対パスを使うと余計な階層が増えてしまうのも理解できました。

先生

その理解はとても大事です。 Linuxコマンドは細かい違いで結果が大きく変わるので、こうしたポイントを押さえることでスキルが一気に伸びます。

生徒

rオプションやpオプションと組み合わせると、さらに実務向けになるのも勉強になりました。

先生

その通りです。コマンドは組み合わせて使うことで真価を発揮します。 今回学んだ内容はサーバ管理や開発現場でもそのまま使えるので、ぜひ実際に試してみてください。

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
Linuxのlsコマンド-iオプション完全ガイド!初心者でもわかるi-node番号の表示方法
New2
ファイル・ディレクトリ操作
stat --dereferenceオプションの使い方を解説|-Lと同じようにシンボリックリンク先の情報を表示しよう
New3
ジョブ管理とバックグラウンド実行
Linuxのジョブ管理とは?初心者向けに仕組みをやさしく解説!バックグラウンド実行の基本も理解しよう
New4
ファイル・ディレクトリ操作
cp --parentsオプションの使い方|ディレクトリ構造を保持してコピーする方法を完全解説!
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
rmコマンドとは?Linuxでファイルやディレクトリを削除する基本
No.3
Java&Spring記事人気No3
テキスト・データ処理
grepコマンドとは?Linuxで文字列を検索する基本をやさしく解説!
No.4
Java&Spring記事人気No4
Linuxコマンドの基本
Linuxコマンドとは?基本の考え方とシェルとの関係を初心者向けに徹底解説