cp(コピー)
100%

コマンドライン · レッスン 10

cp(コピー)

上書きと属性の保持を制御しながら、ファイルやディレクトリツリーをコピーする方法を学びます。

cp コマンドは、コピー元を残したままファイルとディレクトリをコピーします。基本構文は次のとおりです。

cp [OPTIONS] SOURCE DESTINATION

1 ファイルを別のパスへコピーする、複数ファイルをディレクトリへコピーする、ディレクトリツリーを再帰的にコピーするといった使い方ができます。

1 つのファイルをコピーする

コピー元を先、コピー先を後に置きます。

$ cp mycoolfile /home/pete/Documents/cooldocs

/home/pete/Documents/cooldocs が既存ディレクトリなら、その中に mycoolfile としてコピーが作られます。新しいコピー先ファイル名を指定することもできます。

$ cp mycoolfile /home/pete/Documents/mycoolfile_backup

2 番目の例では、コピーしたデータに mycoolfile_backup という名前が付きます。

draft.txt を残したまま、final.txt というファイルへコピーするコマンドはどれですか?

複数のファイルをディレクトリへコピーする

すべてのコピー元を先に並べ、コピー先ディレクトリを最後に置きます。

$ cp report.txt notes.txt summary.txt /home/pete/Documents/

コピー元が複数ある場合、最後の引数はディレクトリでなければなりません。

a.txtb.txt を既存の archive/ ディレクトリへコピーするコマンドはどれですか?

ワイルドカードでファイルを選ぶ

シェルはワイルドカードパターンを複数のコピー元パスへ展開できます。

  • *:任意の文字列に一致する
  • ?:任意の 1 文字に一致する
  • []:ブラケット内のいずれか 1 文字に一致する

たとえば、現在のディレクトリで名前が .jpg で終わるファイルを Pictures へコピーします。

$ cp *.jpg /home/pete/Pictures

特にコピー先に重要なデータがある場合、一括コピーの前に一致結果を確認します。

$ ls *.jpg
beach.jpg  lunch.jpg  profile.jpg
$ cp *.jpg /home/pete/Pictures

*.jpg をコピーする前に、パターンが現在一致する隠しファイル以外の名前を表示するコマンドはどれですか?

ディレクトリツリーをコピーする

ディレクトリとその下のすべてをコピーするには、再帰操作が必要です。-r または -R を使います。

$ cp -r Pumpkin/ /home/pete/Documents

これは Pumpkin ディレクトリとその子孫を Documents へコピーします。

大文字の -R も再帰的なコピーを要求します。

$ cp -R website /home/pete/backups/

アーカイブモードの -a は、バックアップ形式のコピーに便利です。再帰的にコピーしながら、リンクや多数のファイル属性を保持します。

$ cp -a project/ project-backup/

project/ を再帰的にコピーし、リンクと多数の属性を保持するバックアップ形式のコピーには、どのコマンドが適していますか?

上書きを制御する

既定では、cp は既存のコピー先ファイルを置換できます。上書き前に確認するには -i を使います。

$ cp -i mycoolfile /home/pete/Pictures
cp: overwrite '/home/pete/Pictures/mycoolfile'? n

既存のコピー先を上書きしない場合は -n を使います。

$ cp -n mycoolfile /home/pete/Pictures

-f は GNU cp に対し、既存のコピー先を書き込み用に開けない場合、その削除を試してコピーを再試行するよう指示します。対象を慎重に確認する代わりにはなりません。シェルのエイリアスが -i などのオプションを追加することもあるため、予期しないプロンプトが出たら設定を決めつけず調べてください。

report.txtbackup/ へコピーし、同名のコピー先が存在すれば飛ばすコマンドはどれですか?

属性を保持する、または新しいファイルだけをコピーする

-p でコピー元のモード、許可される場合は所有権、タイムスタンプを保持します。

$ cp -p mycoolfile /home/pete/backups/

コピー先が存在しないか、コピー元の方が新しい場合だけコピーするには -u を使います。

$ cp -u *.txt /home/pete/Documents/

そのほかの一般的なオプションには次のものがあります。

  • -f:必要なら先にコピー先を削除し、上書きを強制する
  • -v:コピーする各ファイルを表示する

ファイルとディレクトリツリーのコピーを練習するには、次のハンズオンラボを利用してください。

  1. **Linux cp コマンド:ファイルのコピー**:基本操作、再帰コピー、属性保持、ワイルドカードなどを練習します。
  2. **ファイルとディレクトリの整理**:cpmvrm でプロジェクト構造を整理し、ファイルを移動して不要なディレクトリを片付けます。

レッスン完了

cp(コピー) を完了しました

これでコピー先の扱いを制御しながら、ファイルとディレクトリツリーをコピーできるようになりました。

  • コピー元オペランドをコピー先より前に置く。

  • 一括コピー前にワイルドカードの一致結果を確認する。

  • ディレクトリツリーを再帰的またはアーカイブモードでコピーする。

  • 既存のコピー先を確認、飛ばす、意図的に置換する。

  • 必要に応じて属性を保持するか、新しいコピー元だけをコピーする。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
コマンドライン に戻る