[Linux] cpコマンドの使い方 – ファイル/ディレクトリのコピー

cpコマンドは、Linuxでファイルやディレクトリをコピーするために使用されます。

基本的な使い方はcp [オプション] コピー元 コピー先です。

ファイルをコピーする場合、単純にコピー元とコピー先を指定します。

ディレクトリをコピーする場合は、-rオプションを使用して再帰的にコピーします。

例えば、cp -r dir1 dir2dir1dir2にコピーします。

-iオプションで上書き確認、-vオプションで詳細表示が可能です。

この記事でわかること
  • cpコマンドの基本的な使い方
  • 主なオプションの活用法
  • 応用例による実践的な利用
  • エラーハンドリングの方法
  • 効率的なファイルコピーのテクニック

目次から探す

cpコマンドとは

cpコマンドは、LinuxやUnix系のオペレーティングシステムで使用されるファイルコピーのための基本的なコマンドです。

このコマンドを使うことで、指定したファイルやディレクトリを別の場所にコピーすることができます。

cpcopy の略で、シンプルな構文で多様なオプションを利用できるため、非常に便利です。

ファイルのバックアップや移動、ディレクトリの複製など、日常的なタスクに広く利用されています。

例えば、特定のファイルを別のディレクトリにコピーしたり、複数のファイルを一度にコピーすることも可能です。

cpコマンドは、Linuxのシェル環境で作業する際に欠かせないツールの一つです。

cpコマンドの基本的な使い方

ファイルをコピーする

ファイルをコピーする基本的な構文は以下の通りです。

cp [オプション] コピー元ファイル コピー先ファイル

例えば、file1.txtというファイルをfile2.txtとしてコピーする場合、次のように入力します。

cp file1.txt file2.txt

このコマンドを実行すると、file1.txtの内容がfile2.txtにコピーされます。

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

ディレクトリをコピーするには、-rオプションを使用します。

このオプションは「再帰的にコピーする」という意味です。

cp -r [コピー元ディレクトリ] [コピー先ディレクトリ]

例えば、dir1というディレクトリをdir2としてコピーする場合、次のように入力します。

cp -r dir1 dir2

これにより、dir1内のすべてのファイルとサブディレクトリがdir2にコピーされます。

複数のファイルを一度にコピーする

複数のファイルを一度にコピーすることも可能です。

この場合、コピー先はディレクトリでなければなりません。

cp [ファイル1] [ファイル2] [ファイル3] [コピー先ディレクトリ]

例えば、file1.txtfile2.txtfile3.txtbackupというディレクトリにコピーする場合、次のように入力します。

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

これにより、指定した3つのファイルがbackupディレクトリにコピーされます。

コピー先にファイル名を指定する

コピー先に新しいファイル名を指定することもできます。

以下のように入力します。

cp [コピー元ファイル] [コピー先ファイル名]

例えば、file1.txtnewfile.txtとしてコピーする場合、次のように入力します。

cp file1.txt newfile.txt

このコマンドを実行すると、file1.txtの内容がnewfile.txtにコピーされます。

cpコマンドの主なオプション

-rオプション:ディレクトリの再帰的コピー

-rオプションは、ディレクトリを再帰的にコピーするために使用します。

このオプションを指定することで、指定したディレクトリ内のすべてのファイルとサブディレクトリがコピーされます。

cp -r dir1 dir2

このコマンドは、dir1dir2としてコピーします。

-iオプション:上書き確認

-iオプションを使用すると、コピー先に同名のファイルが存在する場合に上書きするかどうかを確認するプロンプトが表示されます。

cp -i file1.txt file2.txt

このコマンドを実行すると、file2.txtが存在する場合に上書きするかどうかを尋ねられます。

-vオプション:詳細表示

-vオプションを指定すると、コピーの進行状況が詳細に表示されます。

どのファイルがコピーされたかを確認するのに便利です。

cp -v file1.txt file2.txt

このコマンドを実行すると、コピーされたファイル名が表示されます。

-uオプション:新しいファイルのみコピー

-uオプションを使用すると、コピー先に存在しないファイルや、コピー元のファイルが新しい場合のみコピーされます。

cp -u file1.txt backup/

このコマンドは、file1.txtbackupディレクトリに存在しないか、より新しい場合にのみコピーします。

-pオプション:属性を保持してコピー

-pオプションを指定すると、コピー元のファイルの属性(タイムスタンプやパーミッションなど)を保持したままコピーできます。

cp -p file1.txt file2.txt

このコマンドを実行すると、file1.txtの属性がfile2.txtに引き継がれます。

-aオプション:アーカイブモードでコピー

-aオプションは、アーカイブモードでコピーを行います。

このオプションは、-p-r-dなどのオプションを組み合わせたもので、ファイルの属性を保持しつつ、ディレクトリを再帰的にコピーします。

cp -a dir1 dir2

このコマンドは、dir1dir2として、すべての属性を保持したままコピーします。

-fオプション:強制的に上書き

-fオプションを使用すると、コピー先に同名のファイルが存在する場合でも、確認なしに強制的に上書きします。

cp -f file1.txt file2.txt

このコマンドを実行すると、file2.txtが存在していても、確認なしに上書きされます。

-nオプション:既存ファイルを上書きしない

-nオプションを指定すると、コピー先に同名のファイルが存在する場合、上書きせずにコピーをスキップします。

cp -n file1.txt file2.txt

このコマンドを実行すると、file2.txtが存在する場合はコピーされず、何も変更されません。

cpコマンドの応用例

シンボリックリンクをコピーする(-Lオプション)

-Lオプションを使用すると、シンボリックリンクをそのリンク先のファイルとしてコピーします。

これにより、リンク先の実体をコピーすることができます。

cp -L linkfile linkcopy

このコマンドを実行すると、linkfileが指しているファイルがlinkcopyとしてコピーされます。

コピー中に進捗を表示する(pvコマンドとの併用)

pvコマンドを使用すると、コピー中の進捗状況を表示することができます。

pvはパイプを通じてデータの進行状況を表示するツールです。

pv file1.txt | cp /dev/stdin file2.txt

このコマンドを実行すると、file1.txtのコピー中に進捗が表示されます。

特定のファイルタイプのみをコピーする(findコマンドとの併用)

findコマンドと組み合わせることで、特定のファイルタイプのみをコピーすることができます。

例えば、.txtファイルだけをコピーする場合、次のようにします。

find . -name "*.txt" -exec cp {} backup/ \;

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

コピー元とコピー先のファイルを比較する(diffコマンドとの併用)

diffコマンドを使用して、コピー元とコピー先のファイルを比較することができます。

これにより、コピーが正しく行われたかを確認できます。

diff file1.txt file2.txt

このコマンドを実行すると、file1.txtfile2.txtの内容の違いが表示されます。

バックアップを作成しながらコピーする(-bオプション)

-bオプションを使用すると、コピー先に同名のファイルが存在する場合、自動的にバックアップを作成します。

バックアップファイルは、元のファイル名に~が付加されます。

cp -b file1.txt file2.txt

このコマンドを実行すると、file2.txtが存在する場合、file2.txt~というバックアップが作成され、その後にfile1.txtfile2.txtとしてコピーされます。

cpコマンドのエラーハンドリング

コピー中にエラーが発生した場合の対処法

cpコマンドを実行中にエラーが発生した場合、エラーメッセージが表示されます。

一般的なエラーには、ファイルが存在しない、パーミッションが不足している、ディスク容量が不足しているなどがあります。

エラーが発生した場合は、以下の手順で対処します。

  1. エラーメッセージを確認し、原因を特定します。
  2. コピー元ファイルやディレクトリのパスが正しいか確認します。
  3. 必要に応じて、パーミッションを変更するか、管理者権限でコマンドを再実行します。

パーミッションエラーの解決方法

パーミッションエラーが発生した場合、ファイルやディレクトリに対する読み取りまたは書き込み権限が不足している可能性があります。

この場合、以下の方法で解決できます。

  • ls -lコマンドを使用して、ファイルやディレクトリのパーミッションを確認します。
  • 必要に応じて、chmodコマンドを使用してパーミッションを変更します。
chmod u+rwx file.txt

このコマンドは、file.txtに対してユーザーに読み取り、書き込み、実行の権限を付与します。

  • 管理者権限でコマンドを実行する場合は、sudoを使用します。
sudo cp file1.txt /protected/directory/

ディスク容量不足時の対応

ディスク容量が不足している場合、cpコマンドはエラーメッセージを表示し、コピーを中止します。

この問題を解決するためには、以下の手順を実行します。

  1. df -hコマンドを使用して、ディスクの使用状況を確認します。
  2. 不要なファイルやディレクトリを削除して、空き容量を確保します。
rm -rf /path/to/unnecessary/files/*
  1. 必要に応じて、別のディスクやパーティションにコピー先を変更します。

これらの手順を実行することで、ディスク容量不足の問題を解決し、正常にファイルをコピーできるようになります。

よくある質問

cpコマンドで上書きされたファイルを元に戻せますか?

cpコマンドで上書きされたファイルを元に戻すことは、基本的にはできません。

上書きされたファイルの内容は失われてしまうため、元に戻すためにはバックアップを取っておくことが重要です。

もしバックアップがある場合は、そのバックアップファイルを復元することができます。

定期的にバックアップを行うことで、データの損失を防ぐことができます。

cpコマンドでコピー速度を改善する方法はありますか?

cpコマンドのコピー速度を改善するためには、いくつかの方法があります。

以下の方法を試してみてください。

  • -uオプションを使用する:新しいファイルのみをコピーすることで、無駄なコピーを避けることができます。
  • pvコマンドを併用するpvコマンドを使用して、データの進行状況を表示しながらコピーすることで、効率的に進行状況を把握できます。
  • SSDを使用する:HDDよりもSSDの方が読み書き速度が速いため、ストレージデバイスをSSDに変更することで全体的なコピー速度が向上します。

cpコマンドで隠しファイルもコピーできますか?

はい、cpコマンドを使用して隠しファイルもコピーすることができます。

隠しファイルは、ファイル名の先頭にドット.が付いているファイルです。

隠しファイルを含むすべてのファイルをコピーするには、次のようにワイルドカードを使用します。

cp -r .* /path/to/destination/

このコマンドは、現在のディレクトリ内のすべての隠しファイルを指定したディレクトリにコピーします。

ただし、..(親ディレクトリ)をコピーしないように注意が必要です。

まとめ

この記事では、cpコマンドの基本的な使い方や主なオプション、応用例、エラーハンドリングについて詳しく解説しました。

これにより、ファイルやディレクトリのコピー作業を効率的に行うための知識を得ることができました。

今後は、実際にcpコマンドを使ってみて、さまざまなオプションや応用方法を試してみることをお勧めします。

  • URLをコピーしました!
目次から探す