cp コマンド情報まとめ
ターミナルの cp コマンドについて、オプション情報、ディレクトリコピーの手順、AI エージェントが実行した場合の危険性などを紹介しています。
cpとは
cp(copy)は、LinuxやmacOSなどのUnix系システムにおいて、ファイルやディレクトリを別の場所にコピーするためのコマンドです。ファイルの複製やバックアップ作成など、日常的に最も多用される基本コマンドの一つです。
オプション「-r」「-p」「-i」「-f」の意味
| オプション | 意味 |
|---|---|
-r, -R, --recursive | ディレクトリを中身(サブディレクトリやファイル)ごと再帰的にコピーします。 |
-p, --preserve | コピー元ファイルの所有者、グループ、アクセス権限(パーミッション)、タイムスタンプを保持したままコピーします。 |
-i, --interactive | コピー先に同名ファイルが存在する場合、上書きするかどうかを確認するプロンプトを表示します。 |
-f, --force | コピー先に同名ファイルが存在し書き込み不可であっても、強制的に削除してから新しいファイルをコピーします。 |
重要な注意事項
cp コマンドは、デフォルトではコピー先に同名のファイルがある場合に確認なしで上書きします。これにより、重要なファイルが意図せず書き換えられ、元データが消失する危険性があります。意図しない上書きを防ぐためには、-i オプションを付与して確認を挟むようにすることが推奨されます。
よく使う組み合わせ
ディレクトリを丸ごとコピーする
cp -r /path/to/source /path/to/destination
ディレクトリとその配下にあるすべてのファイル、サブディレクトリを再帰的にコピーします。ディレクトリをコピーする場合は -r の指定が必須です。
属性情報を保持してバックアップを作成する
cp -p config.conf config.conf.bak
設定ファイルを書き換える前に、パーミッションや更新日時などの属性情報を完全に維持した状態のコピー(バックアップ)を同じ場所に作成します。
ユースケース
システム設定ファイルの退避
/etc/ 配下のシステム設定ファイルを編集する際、トラブルに備えて事前に元のファイルを別名でコピーしてバックアップを保存します。
Webアセットの配置
開発中の画像やCSSなどのアセットファイル群を、Webサーバーの公開ディレクトリ(ドキュメントルート)へ一括コピーして配置します。
AIエージェントが実行しようとした場合
AIエージェントの目的
AIエージェントは主に次のような目的で cp を実行しようとすることがあります。
- 設定ファイルなどを書き換える前の自動バックアップを作成するため
- ビルド成果物やリソースファイルを特定のディレクトリに配置するため
危険性
cp コマンドは対象を誤ると既存の重要ファイルを意図せず上書きしてしまう危険性があります。そのため、AIエージェントが実行する際は、上書き先に既存のファイルがないか確認するか、-i または -n(上書き禁止)オプションを併用して安全性を確保する必要があります。