cpコマンドで覚えておきたい使い方9個(+1個)

LinuxやUNIXを使う上で、ほぼ必ず利用するcpコマンド。
今回は、このcpコマンドで覚えておきたい使い方を9個紹介する。

1.基本的な使い方

今更言うまでもない気がするが、基本的なコマンドの実行方法は以下の通りだ。

cp コピー元ファイル コピー先PATH

2.ディレクトリごとコピーする

ファイル単位ではなくディレクトリごとコピーする場合は、「-r」オプションを付与する。

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

3.複数のファイルを個別に指定してコピーする

複数のファイルを個別に指定してコピーする場合は、以下のようにコマンドを実行する。

cp コピー元ファイル1 コピー元ファイル2 コピー元ファイル3 .... コピー先PATH

4.ファイル上書き時に上書き保存をするか否かを確認するプロンプト表示を行わせる

ファイルのコピーを行う際、コピー先PATHにもし同名のファイルが合った場合はコピーするかどうかを聞くようにしたい。
そんなときは、「-i」オプションを付与することで対応可能だ。

(最近のディストリビューションであれば、基本的にはエイリアスで設定済…のはず)

cp -i コピー元ファイル コピー先PATH

なお、このオプション無しに上書きをしない場合は、「-n」オプションを用いる。
これと似たオプションで、タイムスタンプが新しい場合のみコピーをする「-u」オプションというものも存在している。

5.強制的に上書きコピーする

コピー先に同名のファイルが合った場合、強制的に上書きするならば、「-f」オプションを利用する。
「-f」オプションを付けても上書きするかどうか聞かれる場合は、コマンドの頭に「\」を付け加える。

通常時

cp -f コピー元ファイル コピー先PATH

上書きの有無を聞かれる場合

\cp -f コピー元ファイル コピー先PATH

6.上書き時にバックアップを取得する

cpコマンドでファイルをコピーする際、上書き時にバックアップを取得させる場合は、「--backup」オプションを付与する。
バックアップしたファイルは、「ファイル名~」として作成される。

cp --backup コピー元ファイル コピー先PATH

バックアップしたファイルの後ろにつく記号は、「--suffix」で設定することができる。
以下のように指定すると、バックアップファイル名は「ファイル名_YYYYMMDD」となる。

cp --backup --suffix=_$(date +%Y%m%d) コピー元ファイル コピー先PATH

番号付きのバックアップを取得することもできる。

cp --backup=numbered コピー元ファイル コピー先PATH

7.権限やオーナー、グループを保持したままコピーする

権限やオーナー、グループを保持したままコピーをする場合は、「-p」オプションを指定する。

cp -p コピー元ファイル コピー先PATH

8.シンボリックリンク・ハードリンクを作成する

cpコマンドで、シンボリックリンク・ハードリンクを作成することも出来る。
シンボリックリンクを作成する場合は「-s」を、ハードリンクを作成する場合は「-l」オプションを付与する。

シンボリックリンクの作成

cp -s コピー元ファイル コピー先PATH

ハードリンクの作成

cp -l コピー元ファイル コピー先PATH

9.コピーの詳細情報を出力する

「-v」を付与することで、コピーについて詳細な内容を出力する事ができる。

cp -v コピー元ファイル コピー先PATH


2015/07/29 追記

10.ディレクトリ構造を含めてコピーする

こちらでも記述しているが、オプション無しの場合、cpコマンドではディレクトリ構造ごと(サブディレクトリを含めた状態で)コピーすることはできない。
もしディレクトリ構造とセットでコピーしたい場合は、「–parents」オプションを利用すると良いだろう。

cp --parents コピー元ファイル コピー先PATH