Linux

linux cpコマンド使い方を解説!ファイルをコピーしてみよう【便利なオプション紹介】

こんにちは、フルスタックエンジニアのryuです。

今回はLinuxのcpコマンドについて解説します。cpとはcopyのことで、ファイルやディレクトリをコピーするために使用します。cpコマンドを使ったことの無い方や、便利なオプションを知りたい方のために詳しく解説します。

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

cpコマンドの使い方が分からない・・・

今回の記事では、“cp”コマンドの基本的な使い方を解説します。cpはcopyの略で、ファイルやディレクトリをコピーするコマンドです。

Linuxの中で基本的なコマンドなのでぜひ覚えておきましょう。今回の記事の内容は以下の通りです。

  • cpコマンドでファイルをコピー
  • cpコマンドでディレクトリにコピー
  • cpコマンドのオプション

では、詳しく解説します!

cpコマンドのでファイルをコピー

では、早速cpコマンドを使ってみましょう。cpコマンドの基本構文は以下の通りです。

cp test1.txt test2.txt
cp [コピー元のファイル] [コピー先のファイル]

text1.txtというファイルをtest2.txtにコピーする動きになります。コピー先のファイルが無い場合はファイルが作成されます。

では、実際にLinuxで確認してみましょう。

ファイルを作成して、コピーしてからファイルの中身を確認します。

以下のようにコマンドを入力してみましょう。

echo "test" > test1.txt        #test1.txtファイルを作成
cp test1.txt test2.txt         #test1.txtをコピー
cat test2.txt             #test2.txtの中身を表示
→test と表示

ちなみにファイルは相対パスで指定しております。絶対パスでも大丈夫です。相対パス、絶対パスが分からない方はこちらの記事を参考にしてください。

【ITパスポート講座⑪】絶対パスと相対パスとは?ファイルパスを理解する!

Linuxで動作させるとこのようになります。ファイルがコピーされていることが確認できます。

cpコマンドの動作

今回の内容はこちらの動画でも紹介しています。30秒くらいで見れます。

cpコマンドでファイルをディレクトリにコピー

次にファイルをディレクトリの中にコピーします。コマンドの文法は以下のようになります。

cp test1.txt testdir/
cp [コピー元のファイル] [コピー先のディレクトリ]

では、実際にLinuxで確認してみましょう。

ディレクトリを作成して、そこに先ほど作成したtest1.txtをコピーします。

コマンドは以下のように入力します。

mkdir testdir                   #testdirという名前のディレクトリを作成
cp test1.txt testdir          #test1.txtをtestdirディレクトリにコピー
ls ./testdir        #lsコマンドでtestdirの中身を確認

Linuxで入力するとこのような感じになります。

cpコマンドでファイルをディレクトリにコピー

ディレクトリの中にファイルがコピーされていることが分かります。

このようにcpコマンドを使用すると、ファイルのコピーができます。さらに、コピーする場所も指定することができます。cpコマンドのオプションを使えば、さらに色々なことができるようになります。

linux cpコマンドで良く使うオプション

cpコマンドで良く使うオプションは以下の3つです。

  • cp -r ディレクトリをコピーする
  • cp -u 保存先のファイルが新しい場合コピーしない
  • cp -v コピーの詳細を表示

では、一つずつ詳しく解説します。

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

まず、-rでディレクトリをコピーするオプションです。ディレクトリごとかディレクトリの中身をコピーするかは、コピー元の指定の仕方で変わります。

#ディレクトリごとコピー
cp -r testdir testdir2 
cp -r [コピー元のディレクトリ] [コピー先のディレクトリ]

#ディレクトリの中身をコピー
cp -r testdir/* testdir2 
cp -r [コピー元のディレクトリ]/*  [コピー先のディレクトリ]

*”アスタリスク”はワイルドカードといって、全ての文字列という意味です。つまり、全てのファイル名が指定されます

実際に試してみましょう。

まず、testdir2ディレクトリを作成して、先ほど作成したtestdirディレクトリをコピーします。ちなみに、testdirの中にはtest1.txtファイルが格納されています。

#ディレクトリごとコピーする
mkdir testdir2
cp -r testdir testdir2
ls ./testdir2
→testdir

#ファイルの中身だけコピーする
cp -r testdir/* testdir2
ls ./testdir2
→test.txt (testdir 先ほどコピーしたのも)

実際のLinuxではこのようになります。

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

ちなみに-rを付けないでディレクトリをコピーすると以下のようなエラーが表示されます。cpコマンドでディレクトリを指定する場合は必ず-rを付けましょう。

p: -r not specified; omitting directory ‘testdir’


p:-rは指定されていません。ディレクトリ「testdir」を省略

cp -u 保存先のファイルが新しい場合コピーしない

次に良く使うオプションは-uです。保存先のファイルが新しい場合はコピーしないようになります

バックアップのスクリプトに使用することが多いです。

cp -u test1.txt test2.txt 
cp -u [コピー元のディレクトリ] [コピー先のディレクトリ]

動作については、こちらの画像を見てください。

cp -u 保存先のファイルが新しい場合コピーしない

最初のcp -uでは、test2.txtの方が新しく編集されたためコピーされません。

その後、test1.txtを編集したため、test2.txtに中身がコピーされるようになりました。

バックアップをする際、古いファイルの内容を上書きしてしまうミスが無くなります。

cp -v コピーの詳細を表示

最後に紹介するのは-vです。-vはcp以外のコマンドでも詳細を表示するオプションになります。-vとはverboseの頭文字です。

こちらは、コマンド単体で使うというよりは、スクリプトを書く際に何をコピーしたか出力するために使用します。

では、使い方を説明します。

cp -v test1.txt test2.txt 
cp -v [コピー元のファイル] [コピー先のファイル]

Linuxで動作させるとこのようになります。

‘test1.txt’ – > ‘test2.txt’のように何のファイルをコピーしたのか詳細を表示してくれます。

linux cpコマンド使い方まとめ

ここまで、cpコマンドの使い方やオプションを紹介してきました。cpコマンドはファイルやディレクトリをコピーするだけのコマンドですが、良く使うコマンドの1つです。ぜひ使いこなせるようになります。

Linuxのコマンド参考書

ABOUT ME
ryu
大手メーカのIT部門でインフラエンジニアやってます。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!