cp -pオプションの使い方|元ファイルのパーミッションやタイムスタンプを保持する方法を初心者向けに解説!
生徒
「Linuxでファイルをコピーしたら、元のファイルと日時が違ってました…。なんでですか?」
先生
「それは、通常のコピーだと更新日時やアクセス権が変わってしまうからです。-pオプションを使えば、元の情報を保ったままコピーできますよ。」
生徒
「そんな便利なオプションがあるんですね!詳しく知りたいです!」
先生
「それでは、cp -pオプションの使い方を一緒に見ていきましょう。」
1. cpコマンドとは?
Linuxのcpコマンドは、ファイルやディレクトリ(フォルダ)をコピーするための基本的なコマンドです。
たとえば、ファイル「data.txt」を「backup」フォルダにコピーするには以下のように入力します。
cp data.txt backup/
この操作でファイルの内容はコピーされますが、作成日時やアクセス権限(パーミッション)などは新しくなってしまいます。
2. cp -pオプションとは?
-pオプションを使うと、元ファイルのパーミッション(アクセス権)・更新日時・作成日時などを保持したままコピーすることができます。
たとえば以下のように使います。
cp -p data.txt backup/
このようにすれば、コピー後のファイルも元ファイルとまったく同じ情報を持った状態になります。
3. 実際に動作を確認してみよう
まず元ファイルのパーミッションと更新日時を見てみます。
ls -l data.txt
-rw-r--r-- 1 user user 100 9月 10 12:00 data.txt
次に通常のコピー(-pなし)をして確認してみましょう。
cp data.txt backup/
ls -l backup/data.txt
-rw-r--r-- 1 user user 100 9月 16 10:30 backup/data.txt
このように、更新日時が変わってしまっているのが分かります。
では次に、-pを使ってコピーしてみます。
cp -p data.txt backup/
ls -l backup/data.txt
-rw-r--r-- 1 user user 100 9月 10 12:00 backup/data.txt
更新日時まで完全に保持された状態でコピーされたことが確認できます。
4. -pで保持される情報とは?
cp -pを使うと、以下の情報が元のファイルからコピーされます。
- パーミッション(アクセス権)
- タイムスタンプ(更新日時・作成日時)
- 所有者(ユーザーとグループ) ※ただし一般ユーザーでは変更できない場合あり
これにより、バックアップやシステム移行時に正確な情報を保ったままコピーできるため、信頼性が高まります。
5. -pオプションが役立つ場面
次のようなシチュエーションで-pオプションはとても有効です。
- 設定ファイルやログファイルをバックアップしたいとき
- タイムスタンプ順で処理されるファイルを正確にコピーしたいとき
- アクセス権が重要なファイル(実行ファイルやスクリプトなど)をコピーするとき
このような場合、-pを忘れると動作に影響が出ることもあるので、注意しましょう。
6. 他のオプションとの組み合わせ
-pは、他のオプションと組み合わせることでさらに便利になります。
-v(verbose): コピーしたファイル名を表示する-i(interactive): 上書き前に確認する-r(recursive): ディレクトリ全体を再帰的にコピー
たとえば、設定ファイルを上書き確認付きでコピーしつつ、元の情報も保持したいときは次のようにします。
cp -ipv config.ini backup/
このようにすれば、安全に元の状態を保ったままコピーできます。
7. 一般ユーザーと所有者の注意点
-pを使っても、一般ユーザーではファイルの所有者情報(ユーザーやグループ)までコピーできないことがあります。
これはシステムのセキュリティ制限によるもので、root権限が必要な場合もあります。
たとえば、/etc以下のファイルをコピーする場合などは、sudo cp -pのように管理者権限で実行する必要があります。