cpコマンドは、ファイルやディレクトリをコピーするのに使用します。
オプションを使うことで細かい条件のコピーができます。
汎用的に使用するオプションをまとめてみました。
cpコマンドの基本
通常のコピー
cpコマンドはcopyの略称になります。
ファイルをコピーするためのコマンドになり、基本的な書式は次のようになります。
$ cp コピー元 コピー先
$ cp fileA.txt fileA_copy.txt
ディレクトリ先にコピーする
cpコマンドは、もちろん、ディレクトリ先へのコピーもできます。
$ cp fileA.txt dir
複数ファイルをコピーする
複数ファイルに同時にコピーすることもできます。
以下は、例としてfileAとBをディレクトリにコピーしています。
$ cp コピー元その1 コピー元その2 コピー先のディレクトリ名
$ cp fileA.txt fileB.txt dir
ワイルドカードで複数コピーする
ワイルドカードを使って一度にコピーすることもできる。複数同じようなファイルがあって、指定するのが面倒くさい場合に使用した方が便利です。
以下は、fileA~Eがあった場合にワイルドを使用して、短いコマンドでコピーをしてます。
$ cp file* ディレクトリ名
$ ls
fileA.txt fileB.txt fileC.txt fileD.txt fileE.txt
$ cp file* dirA.txt
$ ls dirA.txt
fileA.txt fileB.txt fileC.txt fileD.txt fileE.txt
cpコマンドのオプション
私が業務で使用するcpコマンドのオプションです。他にもありますが、あまり使用したことがないので、これだけ覚えておけば問題ないです。
オプション -a
元ファイルの属性とディレクトリの構成を可能な限り保持をしてコピーします。
オプション -f
コピー先に同じ名前のファイルがあっても警告なしで上書きをします。
オプション -i
上書きされるファイルがある場合は、 上書きをしてもよいかの確認をします。
オプション -p
元のファイルのオーナー、グループ、パーミション、タイムスタンプを保持します。
オプション -r
ディレクトリごとコピーします。(再帰的)
オプション -v
コピーの詳細情報を表示します。
-aオプション:属性とディレクトリ構成を可能な限り保持する
フォルダに階層があるファイルを、他のディレクトリにコピーするときに、できるだけ属性とディレクトリ構成を保持してコピーするときに使用されるオプションです。
$ cp -ar dirA dirB
-fオプション:強制的にコピーする
ディストリビューションごとに異なりますが、コピー先に同じ名前のファイルがある場合に確認が入ることがあります。
逐一それに答えるのが面倒な場合、使えるのが「-f」コマンドです。
forceは強制を意味しますので、問答無用でコピーを行います。
$ cp -f fileA.txt fileB.txt
-iオプション:上書きになるときは確認する
大事なファイルを扱っているときには、上書きになるかを確認したいときもあります。
慎重にコピーをしたい場合は使用した方がいいです。
$ cp -i fileA.txt fileB.txt
-pオプション:元のファイルのオーナー、グループ、パーミション、タイムスタンプを保持する
ある重要なファイルをコピーするときに、属性を保持したままで別ファイルにコピーするときに、使用するオプションです。
$ cp -p fileA.txt fileB.txt
-r オプション:ディレクトリごとコピーする
-rオプションをつけることにより、ディレクトリごとコピーすることができます。
もちろんディレクトリの中のファイルもコピーの対象になります。
$ cp -r dir1 dir2
-vオプション:コピーの情報を表示する
-vオプションを利用すると、何がコピーされたかの情報を表示してくれます。
複数ファイルをコピーするときに、ワイルドカードを使ったときなど、付けておくと便利です。
cp -v file* dir