カテゴリ: Linuxコマンド集 更新日: 2025/12/12

cp -aオプションとは?Linuxで属性付きコピーをするアーカイブモードの基本

cp -aオプション|属性も含めてアーカイブモードでコピーする
cp -aオプション|属性も含めてアーカイブモードでコピーする

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

生徒

「Linuxのcpコマンドで-aオプションって見かけたんですけど、これは何をするものですか?」

先生

-aはアーカイブモードと言って、ただコピーするだけじゃなくて、ファイルの属性やパーミッション、タイムスタンプなんかも全部そっくりそのままコピーしてくれるオプションなんですよ。」

生徒

「なるほど!ただのコピーとは違うってことなんですね。詳しく教えてください!」

先生

「それでは、実際にcp -aの使い方やポイントを見ていきましょう。」

1. cp -aとは?アーカイブモードの意味

1. cp -aとは?アーカイブモードの意味
1. cp -aとは?アーカイブモードの意味

cp -aは、Linuxでファイルやディレクトリを「そのままの状態」でコピーするアーカイブモードです。「archive(アーカイブ)」のaが由来です。

このオプションを使うことで、以下のような情報も含めてコピーされます:

  • ファイルの所有者
  • パーミッション(読み書き実行の権限)
  • タイムスタンプ(作成日時・更新日時)
  • シンボリックリンク
  • ディレクトリ構造

つまり「ただ中身だけコピーする」のではなく、「状態も含めて完全コピー」するイメージです。

2. 基本的な使い方

2. 基本的な使い方
2. 基本的な使い方

cp -aの基本的な書き方は以下のとおりです。


cp -a コピー元 コピー先

たとえば、data_folderというフォルダをbackup_dataとして完全コピーしたい場合はこう書きます。


cp -a data_folder backup_data

この操作で、data_folderの中のファイルやディレクトリ、属性情報まですべてそっくりbackup_dataに複製されます。

3. cp -aとcp -rの違い

3. cp -aとcp -rの違い
3. cp -aとcp -rの違い

cp -rもディレクトリを再帰的にコピーできますが、属性まではコピーされません

たとえばcp -rでコピーすると、所有者や作成日時などが変わってしまうことがあります。

一方でcp -aは、-rに加えて、-d(リンク保持)や-p(属性保持)などをまとめたオプションなので、より完全なバックアップが可能です。

4. 属性とは何か?初心者向けに解説

4. 属性とは何か?初心者向けに解説
4. 属性とは何か?初心者向けに解説

Linuxでの「属性」とは、次のような情報のことを指します。

  • 所有者:誰のファイルなのか(例:user1)
  • パーミッション:誰が読み書きできるか(例:rw-r--r--)
  • タイムスタンプ:ファイルがいつ作られたか、いつ更新されたか
  • シンボリックリンク:別のファイルへの参照(ショートカットのようなもの)

cp -aを使えば、こうした属性もすべて維持されます。

5. コピー先に既にファイルがあるときは?

5. コピー先に既にファイルがあるときは?
5. コピー先に既にファイルがあるときは?

cp -aはコピー先に同じ名前のファイルがあると確認なしで上書きします。重要なデータを守るためには、-i(確認)をつけるのもおすすめです。


cp -ai config config_backup

このようにすると、「上書きしてもいいですか?」と聞かれるようになります。

6. 実際に属性を比較してみよう

6. 実際に属性を比較してみよう
6. 実際に属性を比較してみよう

コピー前後で属性が同じかどうかはls -lコマンドで確認できます。


ls -l original.txt
-rw-r--r-- 1 user user 1234  9月 15 12:00 original.txt

cp -a original.txt copied.txt

ls -l copied.txt
-rw-r--r-- 1 user user 1234  9月 15 12:00 copied.txt

このように、パーミッションや更新日時なども元のままコピーされていることが確認できます。

7. バックアップ用途でのおすすめ

7. バックアップ用途でのおすすめ
7. バックアップ用途でのおすすめ

cp -aは、システム設定ファイルのバックアップや、重要なデータの完全コピーに最適です。

例:ホームディレクトリを外付けHDDにコピーしたいとき


cp -a ~/Documents /mnt/usb_backup/

このようにすれば、フォルダ構成も属性もすべて保持したまま、バックアップが取れます。

まとめ

まとめ
まとめ

今回の記事では、Linuxでファイルやディレクトリを「丸ごと複製」したいときに非常に便利なcp -aオプションについて、初心者でも理解しやすい形で解説しました。cpコマンドはLinuxの基本操作の中でも特に使用頻度が高いものですが、その中でも-a(アーカイブモード)は、単純なコピーとは違い、所有者・パーミッション・更新日時・シンボリックリンク・ディレクトリ構造などの属性をすべて維持したまま完全コピーしてくれる非常に強力な機能です。通常のコピーでは失われてしまう細かい情報もそのまま保持されるため、バックアップ用途や正確な複製が求められる環境では欠かせません。

Linuxのファイルシステムでは、単なる中身のコピーだけでは不十分なケースが多くあります。例えば、設定ファイルの権限が変わってしまうと正しく動かなくなることもあるため、cp -aによる属性保持は非常に重要です。一般的なcp -rでは再帰コピーはできますが、属性までは保持されません。そこで-aを使うと、内部で-r-d-pなどをまとめて実行し、より確実なコピーを行ってくれます。

また、コピー先に既にファイルが存在する場合、cp -a は確認なしに上書きするという特徴もあるため、慎重に操作したいときには -i オプションを併用して、上書き前に確認する方法も紹介しました。


cp -ai config config_backup

このようにすることで、誤って大切なファイルを上書きしてしまう事故を防げるため、初心者だけでなく熟練者にも推奨される使い方です。

さらに、cp -a の動作を実際に確かめるために、コピー前後の属性を ls -l で比較する例も確認しました。


ls -l original.txt
-rw-r--r-- 1 user user 1234  9月 15 12:00 original.txt

cp -a original.txt copied.txt

ls -l copied.txt
-rw-r--r-- 1 user user 1234  9月 15 12:00 copied.txt

この結果からも分かるように、cp -a を使うとパーミッションや所有者、更新日時がすべて保持されていることが確認できます。これは、Linuxの動作に関わる重要な属性を正確に残したままコピーできている証拠です。特に、設定ファイルやシステムディレクトリのバックアップではこの属性保持が欠かせないポイントとなります。

cp -a は、ホームディレクトリのバックアップからプロジェクト全体の複製、設定ファイルの安全な保存まで、幅広い用途に対応できます。例えば外部ストレージへのバックアップでは次のような使い方が非常に便利です。


cp -a ~/Documents /mnt/usb_backup/

このように、フォルダ構造、権限、ファイル属性などを保ったまま安全にバックアップが取れるため、後から元に戻す際にも正確に復元できます。日々の作業環境を守りたい人にとって、cp -a は頼もしい味方になります。

Linuxのファイル管理は、権限やタイムスタンプなど細かい情報がそのまま動作に影響する世界です。その中で cp -a を活用すれば、安心してバックアップを取ったり、正確なコピーを作成したりできるようになります。初心者の方も、まずは小さなフォルダで試しながら、cp -a の便利さを実感してみてください。習得すれば、Linux操作の幅が一段と広がり、ファイル管理をより安全かつ効率的に行えるようになります。

先生と生徒の振り返り会話

生徒

「先生、cp -a がここまで便利だとは知りませんでした!属性まで全部コピーされるなんて、普通の cp とどう違うのかよく分かりました。」

先生

「その理解はとても大事だよ。Linux のファイルは、中身だけじゃなく、権限やタイムスタンプといった属性もそのまま動作に影響するからね。それを丸ごと複製できるのが cp -a の強みなんだ。」

生徒

「バックアップのときに使う理由もよくわかりました。cp -r だけだと不十分なケースがあるんですね。」

先生

「そうなんだ。特に設定ファイルは権限が変わるだけで動かなくなることも多いから、状態を保ったままコピーできる cp -a はとても役に立つよ。今日の説明でその重要性が伝わったなら嬉しいね。」

生徒

「はい!まずは自分のフォルダで試してみます!安全なコピーって大事ですね。」

先生

「その意識があれば大丈夫。Linux の世界は奥深いけれど、ひとつひとつ覚えていけば確実に力になるよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

cp -aオプションとは何ですか?Linuxでの意味を教えてください

cp -aオプションは、Linuxでファイルやディレクトリを「そのままの状態」でコピーするアーカイブモードの機能です。ファイルの所有者、パーミッション、タイムスタンプ、シンボリックリンクなどの属性を含めて完全にコピーします。
関連記事:
カテゴリの一覧へ
新着記事
New1
テキスト・データ処理
grep -hオプションの使い方|ファイル名を表示せずに一致行だけを出力する方法
New2
ファイル・ディレクトリ操作
find -mindepthオプションの使い方を完全ガイド!検索の最小深さを指定して効率よくファイル検索
New3
ファイル・ディレクトリ操作
Linuxのlsコマンド-iオプション完全ガイド!初心者でもわかるi-node番号の表示方法
New4
ファイル・ディレクトリ操作
stat --dereferenceオプションの使い方を解説|-Lと同じようにシンボリックリンク先の情報を表示しよう
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
テキスト・データ処理
grepコマンドとは?Linuxで文字列を検索する基本をやさしく解説!
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
statコマンドとは?Linuxでファイルやディレクトリの詳細情報を確認する基本