Linuxの「cp」コマンド徹底解説:ファイルとディレクトリを自由自在にコピーする方法
このチュートリアルでは、Linuxのcpコマンドの使い方を解説します。cpは、ファイルやディレクトリをある場所から別の場所へコピーするための基本コマンドです。
Linuxは多くの開発者に選ばれているプラットフォームですが、初心者のうちは「ファイルを別の場所にコピーしたい」という場面にすぐ出会うはずです。この記事では、cpコマンドの基本的な使い方から、実務で役立つ便利なテクニックまで、わかりやすく紹介していきます。
cpコマンドとは
cpコマンドの目的はシンプルで、「ファイルやフォルダをある場所から別の場所へコピーする」ことです。
Linuxシステムに接続されている任意のファイルシステム間でコピーが可能で、元のファイルはそのまま残しつつ、コピー先のファイル名の変更や上書きの制御も柔軟に行えます。
マニュアルページによると、cpコマンドの構文は以下の通りです。
cp [OPTIONS] SOURCE DESTINATION
cpコマンドの主なオプション
コピーを実行する際には、既存ファイルの扱い方や、ディレクトリの中身まで含めるかどうかなどをオプションで指定できます。よく使われるオプションは次の通りです。
-b:バックアップ(上書きされる各ファイルのバックアップを作成する)
-f:強制(既存のコピー先ファイルが開けない場合、削除して再試行する)
-i:対話式(上書き前に確認メッセージを表示する)
-n:上書き禁止(既存ファイルを上書きしない)
-p:属性保持(パーミッション、所有者、タイムスタンプを保持したままコピーする)
-r:再帰的(ディレクトリとその中身をまとめてコピーする)
-u:更新(コピー元がコピー先より新しい場合、またはコピー先にファイルが存在しない場合のみコピーする)
-v:詳細表示(実行中の処理内容を表示する)
cpコマンドでファイル・ディレクトリをコピーする実例集
単一ファイルをコピーする
最も基本的な使い方は、cpコマンドに続けて、コピー元とコピー先のパスを半角スペースで区切って指定するだけです。
cp /path/to/source/file.txt /path/to/destination/file.txt
ディレクトリとその中身を丸ごとコピーする
ディレクトリごとコピーする場合は、-r(再帰的)オプションを使用します。コピー元とコピー先のディレクトリパスをスペースで区切って指定すると、元のディレクトリ名のまま、中身全体がコピー先へ複製されます。
cp -r /path/to/source_directory /path/to/destination_directory
複数のファイルやディレクトリを一度にコピーする
複数のファイルを1つのディレクトリにコピーしたい場合は、ファイルパスをすべてスペースで区切って列挙します。最後に指定したパスがコピー先として扱われます。
cp source_file_1.txt source_file_2.txt path/to/destination_directory
同様に、-r(再帰的)オプションを付ければ、複数のディレクトリも一度にコピーできます。
cp -r source_directory_1/ source_directory_2/ /path/to/destination_directory
また、ワイルドカード(*)を使えば、コピー元ディレクトリ内のすべてのファイルやディレクトリを一括でコピーすることも可能です。
cp -r /path/to/source/* /path/to/destination
特定のファイル名や拡張子のファイルだけをコピーする
ワイルドカード(*)を活用すれば、特定の名前や拡張子に一致するファイルだけを選んでコピーできます。以下は、コピー元ディレクトリからJPG画像だけをコピー先ディレクトリへ転送する例です。
cp /path/to/source/*.jpg path/to/source/*.JPG /path/to/destination_directory
シンボリックリンクをコピーする
シンボリックリンクは、それ自体にデータを持たず、ディスク上の別のファイルへの参照だけを保持している特殊なファイルです。cpコマンドではデフォルトで除外されるため、含めてコピーしたい場合は-dオプションを使用します。
cp –d source_file_1.txt /path/to/destination_directory
7日以内に更新されたファイルだけをコピーする
cpコマンドは他のコマンドと組み合わせることで、より細かい条件でのコピーが可能になります。次の例では、findコマンドで7日以内に更新されたファイルだけを抽出し、その結果に対してcpコマンドを実行しています。
find /path/to/files* -mtime -7 -exec cp {} /mnt/nas/ \;
コピー結果を確認する
コピー後は、lsコマンドでコピー先ディレクトリの内容を確認しましょう。
ls -hl /path/to/destination_directory
まとめ
ファイルのコピーは日々の作業で必ず必要になるタスクです。何度か使っているうちに構文は自然と身につき、意識せずに入力できるようになるでしょう。他にもLinuxコマンドラインでよく使う操作について知りたい方は、ぜひ当サイトの他の記事も参考にしてください。
-
Linuxターミナルでテキスト・ファイル・フォルダをコピー&ペーストする方法
コピーアンドペーストは、パソコン操作の中でも最もよく使う基本動作のひとつです。通常はCtrl + CとCtrl + Vのショートカットキーで簡単に行えますが、Linuxターミナルではそのままでは機能しません。とはいえ、目的を達成するための方法はいくつかあります。この記事では、Linuxターミナルでテキスト、ファイル、ディレクトリをコピー&ペーストする方法をわかりやすく解説します。テキストのコピー&ペーストターミナル上のテキストをコピーしたいだけなら、マウスで対象部分を選択(ハイライト)してから、Ctrl + Shift + Cを押すだけでコピーできます。貼り付けは、カーソル位置でCtrl +
-
Linuxのlsコマンド徹底解説!ファイルとディレクトリを一覧表示する方法
Linuxのlsコマンドは、多くのユーザーが最初に使うことになる基本コマンドの一つです。この記事では、lsコマンドの基本的な使い方と、実務で頻繁に利用されるオプションについてわかりやすく解説します。 筆者が普段よく使うオプションの組み合わせは以下のとおりです。 ls -Zaltrh それでは、各オプションの意味をひとつずつ掘り下げながら、この組み合わせがなぜ便利なのかを説明していきます。 lsコマンドの基本構文 # ls [OPTION] [FILE] OPTIONS: [-a] 「.」または「..」で始まる隠しエントリを無視しない [-h] -lと併用した場合、サイズを人間が読みやすい形式で