ファイルやディレクトリをコピーするcpコマンドの使い方!【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket

Linuxを使っている限り必ず使うのがcpコマンドだ。ファイルやディレクトリをコピーするのに使う。

本日はLinuxのcpコマンドの使い方について詳しく解説した。

知っているオプションも多いだろうが、意外と知られていない便利なオプションについてもまとめている。

Linuxを使うエンジニアは参考にして頂ければと思う。

ファイルやディレクトリをコピーするcpコマンドの基本

通常のコピー

cpコマンドはcopyの略で、そのままファイルをコピーするためのコマンドだ。基本的な書式は次のようになる。

$ cp コピー元 コピー先

例えば次のような形だ。

$ cp fileA.txt fileA_copy.txt

cpコマンドの基本

これでコピーが完了する。

もちろん別のディレクトリにもコピーはできる。次の例はdirディレクトリにコピー先を指定している。

$ cp fileA.txt dir/fileA_copy.txt

ここまでは基本の基本ということで、使い方で知っている方も多いだろう。

ファイル名をそのままにコピー

ファイル名を変更せず同じ名前としてコピーする場合、コピー先にはディレクトリ名を書くだけでよい。

$ cp コピー元 コピー先のディレクトリ名

これだけでコピーができる。次のような形だ。dirディレクトリの中にfileA.txtをコピーしている。

$ cp fileA.txt dir

cp directory

複数ファイルをコピー

これは知らない方も多いと思うが、複数ファイルに同時にコピーすることもできる。上と同じようにファイル名を同じにして、ディレクトリに保存する。

$ cp コピー元その1 コピー元その2 コピー先のディレクトリ名

$ cp fileA.txt fileB dir

cp dir

このように2つのファイルを同時にコピーできた。

ワイルドカードでコピー

ワイルドカードを使って一度にコピーすることもできる。次のような形だ。

$ cp file* ディレクトリ名

cp *

こちらも意外によく使える。覚えておいて損はない。

cpコマンドの便利なオプションたち

cpコマンドのオプション一覧

特に便利なものを後からピックアップしてご紹介するが、まずは一覧でご紹介しよう。

-a 元ファイルの属性とディレクトリの構成を保持してコピーする。可能な限り。
-b 上書きされるファイルのバックアップを作成する
-d シンボリックリンクをコピーする時は実体をコピーする
-f コピー先に同じ名前のファイルがあっても警告なしで上書きをする。
-i 上書きされるファイルがある場合、確認が入る。
-l ハードリンクを作成する
-P ディレクトリをつけてコピーする
-p 元のファイルのオーナー、グループ、パーミション、タイムスタンプを保持
-r ディレクトリごとコピーする(再帰的)
-s シンボリックリンクを作成する
-u 保存先が同じファイル名のファイルだったとき、タイムスタンプを確認して、新しいor同じだったときコピーしない。
-v コピーの詳細情報を表示

これらがcpコマンドのオプションだ。便利なものだけピックアップしてご紹介していく。

-r オプション:ディレクトリごとコピー

cpコマンドの中で、もっともよく使うオプションが、この「-r」オプションだろう。

-rオプションをつけることにより、ディレクトリごとコピーすることができる。ディレクトリの中のファイルもコピーの対象だ。

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

cp -r

-fオプション:強制的にコピー

ディストリビューションごとに違うのだが、コピー先に同じ名前のファイルがある場合に確認が入ることがある。

いちいちそれに答えるのが面倒な場合、使えるのが「-f」コマンドだ。forceの名の下に、強制的に上書きをする。

cp -f

-iオプション:上書きになるときは要確認

-fオプションとは反対に、上書きになるかを確認したいときもある。大事なファイルを扱っているときには、上書きは致命傷になる。

$ cp -i ファイル元 コピー後

で「yes or no」の確認が出る。

cp -i

最近のディストリビューションではこちらがデフォルトになっていることもある。設定されていない場合にはエイリアスで設定しておいてもいいだろう。

-bオプション(--backup):上書き時にバックアップファイルを作成

大事なファイル群を扱っているとき、上書きをするのはやはり怖い。その際に使えるのが「-b」オプションだ。

-bオプションを利用すると、cpコマンドを実行すると同時にバックアップファイルを作ってくれる。

cp -b

最後に、「~」がついたファイルがバックアップされたファイルだ。自動的に生成してくれるのは頼もしい。

バックアップ時に後ろにつける文字列は「~」だけではなく、指定することも可能だ。--suffixオプションを使う。

$ cp -b --suffix=_$(date +%Y%m%d) コピー元 コピー先

とすると、「_20180129」というように今日の日付を後ろにつけることができる。バックアップとしてはこちらの方がわかりやすくていい。

cp -b suffix

また、numberedなどを利用すると、番号をつけることもできる。詳細はhelpを確認してみよう。

-sオプション(--symbolic-link):シンボリックリンクの作成

通常シンボリックリンクを作成する時は、lnコマンドを使って

$ ln -s 元ファイル シンボリックリンク

と書く。実はcpコマンドでもこれができる。-sコマンドを利用する方法だ。

$ cp -s 元ファイル シンボリックリンク

で、実は作成できる。

cp -s

-lオプション:ハードリンクを作成

同じように「-l」オプションを利用すると、ハードリンクが作成できる。「ls -il」コマンドで確認すると、i-nodeが同じことを確認できる。

cp -l

-vオプション:コピーの情報を表示

-vオプションを利用すると、何がコピーされたかの情報を表示してくれる。ワイルドカードを使ったときなど、付けておくと便利だ。

cp -v

-Pオプション(--parents):ディレクトリ構造ごとコピーする

通常のcpコマンドではサブディレクトリも含めた状態でコピーすることはできない。そういうときには「-P」オプションを利用する。

下記の例でオプションなしで実行すると、普通はfileC.txtがdirディレクトリに入るだけになる。--parentsオプションを使うことで、ディレクトリ構造をそのままコピーできているのがわかるだろう。

cp -P

 

CPコマンドと類似のコマンド群

最後に、cpと似ているコマンドもご紹介しておこう。

mvコマンド

moveで移動のコマンド。名前を変えるときにも使う。cpと同じくファイル、ディレクトリに関する重要コマンドだ。

rsync

高速なファイルの同期やバックアップに使うコマンドだ。コピー元とコピー先で差分(違いのみ)をコピーできる点でcpよりも早く動く。

本番サーバーへの移行やバックアップに使われることが多い。

install

ファイルをコピーし、その属性を設定するinstallコマンドというものもある。インストール作業に便利なコマンドで、設定時などに使うといいだろう。

それぞれ、使える場面があるので、興味があるコマンドは調べてみることをオススメする。

まとめ

コピーコマンドについて、普段使わないオプションも含めてまとめてみた。いかがだっただろうか? -bオプションなどは便利だが、「知らなかった」という方も多かったのではないだろうか?

このようにcpコマンドにも様々に便利な使用方法がある。引き続き、様々なコマンドの詳細をお伝えしていくので、参考にして頂ければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. qqq より:

    ファイル名を入力しなくて済むので、早く作業が終わる。

    ファイル名の入力と作業時間のバーターではない。
    ファイル名を「変えない」選択とも考えられないか?

    1. リカレントテクノロジー より:

      ご指摘いただきありがとうございます。
      該当箇所の記述を訂正いたしました。

      引き続き、ご愛読のほど、よろしくお願いいたします。

qqq へ返信する コメントをキャンセル

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する