メインコンテンツまでスキップ

cp コマンド

Unix系のオペレーティングシステムにおいて、cp コマンドはファイルやディレクトリをコピーするための強力なツールです。"copy"(コピー)を意味し、システム管理者や開発者によってファイルシステムを管理するために広く使用されています。

cp の概要

cp コマンドはシンプルでありながらも柔軟性があります。これにより、ファイルシステム内の別の場所に一つまたは複数のファイルやディレクトリをコピーすることができます。cp を使用することで、ファイルを複製したり、重要なデータをバックアップしたり、単一のコマンドでディレクトリの階層を作成することができます。

基本的な構文

cp コマンドの基本的な構文は以下の通りです:

cp [オプション] ソース デスティネーション
  • ソース: コピーしたいファイルやディレクトリです。
  • デスティネーション: ファイルやディレクトリをコピーしたい場所です。

オプション

cp コマンドには、その挙動を変更するための多様なオプションがあります。以下は一般的に使用されるオプションのいくつかです:

  • -a: アーカイブモード;ファイル属性を保持し、ディレクトリを再帰的にコピーします。
  • -i: インタラクティブモード;上書き前にプロンプトを表示します。
  • -f: 強制モード;確認なしで既存のファイルを上書きします。
  • -n: 既存のファイルを上書きしません。
  • -p: ファイルのモード、所有権、タイムスタンプを保持します。
  • -r: 再帰モード;ディレクトリを再帰的にコピーします。
  • -u: 更新モード;ソースファイルがデスティネーションファイルよりも新しい場合のみコピーします。
  • -v: 詳細モード;コピー操作の進捗を表示します。

ファイルのコピー

単一のファイルをコピーするには、cp コマンドに続けてソースファイルとデスティネーションファイルまたはディレクトリを指定します。

例 1: 単一のファイルのコピー

cp example.txt /home/user/backup/

このコマンドは、現在のディレクトリから example.txt/home/user/backup/ ディレクトリにコピーします。デスティネーションに example.txt が既に存在する場合、それは上書きされます。

出力: 確認が表示されない限り、-v オプションを使用して詳細モードを使用していない場合は出力されません。

例 2: 新しいファイル名でのコピー

cp example.txt /home/user/backup/example_backup.txt

ここでは、example.txt/home/user/backup/ ディレクトリにコピーされ、example_backup.txt という名前に変更されます。

出力: -v が使用されていない限り、出力されません。

ディレクトリのコピー

ディレクトリをコピーするには、-r オプションを使用してすべてのファイルとサブディレクトリを含める必要があります。

例 3: ディレクトリのコピー

cp -r my_directory/ /home/user/backup/

このコマンドは、my_directory ディレクトリとその内容を /home/user/backup/ ディレクトリに再帰的にコピーします。

出力: -v が使用されていない限り、出力されません。

属性の保持

タイムスタンプやアクセス権などのファイル属性を保持するには、-p オプションを使用します。

例 4: ファイル属性の保持

cp -p example.txt /home/user/backup/

このコマンドは、example.txt をコピーすると同時にその属性を保持します。

出力: -v が使用されていない限り、出力されません。

インタラクティブなコピー

誤ってファイルを上書きしないように、-i オプションを使用して上書き前に確認を求めます。

例 5: インタラクティブモード

cp -i example.txt /home/user/backup/

デスティネーションに example.txt が存在する場合、cp は上書きする前に確認を求めます。

出力:

cp: overwrite '/home/user/backup/example.txt'?

複数のファイルのコピー

複数のファイルをコピーするには、デスティネーション前にリストアップします。

例 6: 複数のファイルのコピー

cp file1.txt file2.txt file3.txt /home/user/backup/

このコマンドは、file1.txtfile2.txtfile3.txt/home/user/backup/ ディレクトリにコピーします。

出力: -v が使用されていない限り、出力されません。

ワイルドカードの使用

ワイルドカードを使用して、パターンに一致するファイルのグループをコピーすることができます。

例 7: ワイルドカードの使用

cp *.txt /home/user/backup/

このコマンドは、現在のディレクトリにあるすべての .txt ファイルを /home/user/backup/ ディレクトリにコピーします。

出力: -v が使用されていない限り、出力されません。

注意すべき点

  • ファイルの上書き: 重要なデータを誤って上書きしないように、コマンドを慎重に確認してください。 -i または -n を使用して、誤ってファイルを上書きしないようにします。
  • 権限: ソースファイルを読み取り、デスティネーションに書き込むための必要な権限があることを確認してください。
  • シンボリックリンク: デフォルトでは、cp はシンボリックリンクのターゲットをコピーし、リンク自体をコピーしません。シンボリックリンクをコピーするには -d を使用します。
  • 属性の保持: -a または -p を使用する際は、デスティネーションファイルに保持された属性を設定するための権限があることを確認してください。

データロスを避けるために、常にコマンドを二度確認してください。さまざまなシナリオでの実践を通じて、この多才なコマンドに精通することができます。