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

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が再現されます。

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

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
cp --parentsオプションの使い方|ディレクトリ構造を保持してコピーする方法を完全解説!
New2
テキスト・データ処理
tail -Fオプションの使い方を完全ガイド!ログローテート後も追跡する方法
New3
テキスト・データ処理
less -Gオプションの使い方を完全ガイド!検索のハイライトを非表示にする方法
New4
テキスト・データ処理
cat -Eオプションの使い方を丁寧に解説!初心者でもわかる行末記号の表示方法と-eとの違い
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
テキスト・データ処理
grepコマンドとは?Linuxで文字列を検索する基本をやさしく解説!
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
rmコマンドとは?Linuxでファイルやディレクトリを削除する基本
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
statコマンドとは?Linuxでファイルやディレクトリの詳細情報を確認する基本