Linux共通

【Linux初心者向け】ファイルをコピーするcpコマンドについて解説

こんばんわ、ミツです。

今回は初心者向けのcpコマンドについて解説していきます。

cpコマンド

ファイルやディレクトリをコピーするには「cp」コマンドを利用します。同じファイルを複数作成したい場合に利用されます。

書式

cp [オプション] コピー元 コピー先

オプション

オプション 説明
-i 同名のファイルが存在する場合には、上書きするかどうかをユーザんい確認します。
-f -i オプションとは逆に、ユーザに確認せずに上書きを行います。
-r ディレクトリごとにコピーします。
-d シンボリックリンクとハードリンクを、そのままリンクとしてコピーします。
-p 日付、フラグなどのファイル情報をできる限りそのままにコピーします。
-a コピー元ファイルの構成と属性を可能な限り保持してコピーします。
-u 同名のファイルが存在する場合には、コピー元ファイルのほうがコピー先ファイルよりお新しいときにだけコピーします。

実行例

それでは「cp」コマンドについて実行例を解説していきます。

基本的な使い方

カレントディレクトリにあるファイル「cpfiile1」を、ディレクトリ「dcp1」にコピーします。

今回の例では「cp」コマンドは、第一引数(cpfile1)で指定されたファイルを、第2引数で指定されたディレクトリ(dcp1)にコピーします。

複数ファイルの場合

複数のファイルを一括して、ディレクトリコピーすることもできます。今度は、カレントディレクトリにある「cpfile1,cpfile2,cpfile3」ファイルを、ディレクトリ「dcp1」にコピーします。

上記のようにcpコマンドで引数(cpfile1,cpfile2,cpfile3)が3つ以上の場合には、最後の引数(dcp1)で指定されたディレクトリに、前の引数で指定された全てのファイルをコピーします。

-i:コピー可否について確認

「-i」オプションは誤って上書きコピーしてしまうのを防ぐに利用します。

「-i」オプションを指定すると、上書きの際には本当に上書きしてよいかどうかを確認するメッセージが表示されます。

誤って上書きしようとしている場合にはキャンセルすることもできます。”y”または”n"を入力してEnterを押します。”y”はYesの意味で上書きしますが、”n”はNoの意味なので上書きされません。

ですので、毎回削除するたびに確認が必要な環境では「-i」を利用することをお勧めします。

ただ「cp」と入力しただけでも実は確認がデフォルトで有効になっています。

これはaliasという内容が絡んできます。コマンドを別名で設定することができ、デフォルトで「cp -i」が「cp」と置き換わっているからです。

-r:ディレクトリ毎コピーする

ディレクトリ毎コピーする場合は、-r オプションを使います。

cpコマンドをオプション無しで実行した場合、ディレクトリはコピーの対象になりません。

-f:ユーザに確認せずに上書きを行います。

「-i」とは逆で確認せずに実行されるようになります。

※aliasでデフォルトでcpコマンドはcp -iがデフォルトで設定されています。そのため「cp -f」と入力しても確認が求められる場合があります。

-d:シンボリックリンクとハードリンクを、そのままリンクされた状態としてコピーします

このようにリンク情報を保持したままコピーしたい場合に便利です。

Lyncの設定方法については下記執筆した記事があるのでご参考いただければと思います。

-p:日付、フラグなどのファイル情報をできる限りそのままにコピーします

-u :同名のファイルが存在する場合には、コピー元ファイルのほうがコピー先ファイルよりお新しいときにだけコピーします

dcp1とdcp2の中にあるそれぞれfile1の中身をls -lで表示しcp -uコマンドで新しい場合のみコピーします。

主に「ログファイルの更新があったものだけを外部サーバに保存する」といったような使い方ができます。

こちらはコピーされない場合の例です。

まとめ

今回は以上となります。ファイルコピーするだけでなく,、いろいろと条件を設定しながらコピーできるので使いこなせると便利です。

主に利用するオプションをピックアップしましたので、ぜひ使ってみてください。

  • この記事を書いた人
  • 最新記事

ミツ

サーバ初心者向け「server-beginner」を運営する「ミツ」と申します。 Linux系やwindows系などのサーバに関する部分をメインで執筆していきますので、興味ある方はぜひご覧いただけますと幸いです。 <経歴> 専門学校卒業後、ネットワーク、インフラ、プログラミングを一通り経験。 当メディアでは主にLinux分野に関する内容を発信していきます。

-Linux共通