linux初心者の方でlinuxコマンドを使ってファイルのコピーをしたいと考えている方いらっしゃるのではないでしょうか。
私自身初心者の頃は、cpコマンドの使い方がよくわかっていませんでした。
本記事では、実際のコマンド実行画面と一緒にわかりやすく解説していますので、linux初心者の方はぜひ、参考にしてみてください。
cpコマンドとは
cpコマンドとは、ファイルのコピーを行う際に使用するlinuxコマンドです
実際の業務の中では、同じファイルをもう1つ作りたい時やファイルの編集を行う際のバックアップファイル作成の際によく使用します。
windowsでは右クリックし、ファイルのコピーを選ぶことで簡単にファイルのコピーができます。
linuxでは、コマンドを用いてファイルのコピーを行いますが、ファイルコピーする際に使うcpコマンドの使い方が少し難しいです。
ネットで何度も調べて行く内に少しずつcpコマンドの使い方に慣れ、作業効率を上げることができるようになります。
cpコマンドのオプション
cpコマンドはファイルをコピーするコマンドということはわかったと思います。
オプションをつけることでファイルコピーだけでなくそのときにディレクトリごとのコピーだったり、権限をそのままにするなどの操作をプラスできます。
ここでは、cpコマンドのオプションについて解説していきます。
オプション | 説明 |
-r | ディレクトリごとコピーするオプション |
-f | 強制的にコピーするオプション |
-i | コピーする際に確認を行う |
-b | ファイルを上書きする際にバックアップファイルを作成するオプション |
-s | シンボリックリンクを作成するオプション |
-l | ハードリンクの作成を行うオプション |
-v | コピー情報を表示するオプション |
-p | 元のファイルのオーナー、グループ、パーミション、タイムスタンプを保持しながらファイルをコピーするオプション |
-r・・・ディレクトリごとコピーするオプション
cpコマンドの中でも業務でよく使うコマンドになります。
cpコマンドは通常のコマンド実行では、ファイルのコピーしか行えませんが、-rオプションをつけることでディレクトリのコピーを行うことができます。
ディレクトリのコピーの際にディレクトリ配下にあるファイルも一緒にコピーされます。
windows画面で説明するとExcelやwordのファイルのみのコピーではなく、黄色の四角に似た形のアイコンのフォルダーをコピーするのと同じ操作です。
windowsのフォルダーアイコン
例えば、/tmp/cpdir2ディレクトリ配下に/tmp/cpdirディレクトリをコピーしたい場合には、以下のような書式になります。
-f・・・強制的にコピーするオプション
ーfオプションを使用した際に同じファイルが存在する等の理由でファイルを上書きするような処理になる場合があります。
その際に-iコマンドのように上書きしますがいいですかというメッセージを出力せずに、強制的に上書きすることができるコマンドになります。
上書きしますかのメッセージは1つのファイルで1回メッセージが出力されるため、複数ファイルの上書きですと何回もメッセージが出力されます。
同じメッセージが何度も表示され、それに答えるのは、作業効率が悪いので、ーfコマンドをつけて強制的にコピーを行い、作業効率を上げています。
例えば、/tmp/cpdir2ディレクトリ配下に/tmp/cpdir/cpファイルをメッセージを出力せず強制的にコピーしたい場合には、以下のような書式になります。
ーi・・・コピーする際に確認を行う
ファイルの上書きコピーを行う際に上書きしていいのか確認を行ってからコピーするオプションになります。
ファイルの誤った上書きコピーを防ぐことができるので作業の安全性をあげることができます。
-iコマンドを使用することで「対象のファイルを上書きしますか?」というメッセージが出力されます。
ファイルの上書きをしていい場合には、「y」を、上書きしない場合には、「n」を選びます。
ファイルの上書き前に確認を挟むので、上書き対象のファイルを間違えることを防ぐことができます。
例えば、/tmp/cpdir2ディレクトリ配下に/tmp/cpdir/cpファイルを確認を行ってからコピーしたい場合には、以下のような書式になります。
ーb・・・ファイルを上書きする際にバックアップファイルを作成するオプション
ーbコマンドはファイルのコピーを行う際にコピー前のファイルをバックアップファイルとして残しておくことができるオプションになります。
例えば、作業を行っていく上でファイルを元に戻したいと思うことがあると思います。
その際にバックアップファイルを使いファイルを元に戻すため、バックアップファイルは重要になってきます。
ーbコマンドの一番簡単な使用方法は下記のような書式になっており、バックアップファイルをどのような名前でコピーするのか指定していないため、自動的にファイルの最後に「~」のついたバックアップファイルが作成されます。
個人的には、名前はしっかりつけた方がいいと思うのでこの使い方はあまりおすすめしません。
バックアップファイルの最後が「~」のバックアップファイルではなく他の文字の入ったバックアップファイルを作成したい場合には、-suffixオプションを使用します。
個人的に作成日を末尾に入れたバックアップファイルを作成することが多いので今回は作成日を末尾に入れたバックアップファイルの作成の仕方を紹介します。
バックアップファイルの最後に日付を入れたい場合は、下記のような書式になります。
例えば、cpファイルをcpbackupファイルとしてコピーする際にバックアップファイルの最後に日付を入れたい場合には、以下のような書式になります。
ーs・・・シンボリックリンクを作成するオプション
-sオプションは、シンボリックリンクを作成することのできるオプションになります。
シンボリックリンクとは、本体とは、別に内容の同じファイルがあり、そのファイルを参照すると本体も参照できるような仕組みになっています。
windowsでいうところのショートカットファイルみたいなものがシンボリックリンクに当たります。
下記の画像を例にすると「cp_symbolic.txt」ファイルを開くと「cp」ファイルの中身を参照するような形になっています。
例えば、cpファイルのシンボリックリンクcp_symbolic.txtを作成したい場合には、以下のような書式になります。
ーl・・・ハードリンクの作成を行うオプション
ーlオプションはハードリンクの作成を行うオプションになります。
ハードリンクとは、実在に存在するファイルを参照するリンクのことを言います。
下記の画像を例にすると、「cp_hard.txt」ファイルの内容を変更した際には、一緒に「cp」ファイルの中身についても同じように変更されます。
例えば、cpファイルのハードリンクcp_hard.txtを作成したい場合には、以下のような書式になります。
ーv・・・コピー情報を表示するオプション
ーvオプションはコピーしたファイルの情報を表示するオプションになります。
例えば複数のファイルのコピーを行う際にどのファイルをコピーしたのか確認するために-vオプションを使用してコピーファイルの確認をする際等に使われます。
cpコマンドはオプションをつけないとどのファイルをコピーしたのか表示されないため、どのファイルがコピーされたか知りたい場合にーvオプションを使用します。
例えば、cpファイルをcpbackupとしてコピーしコピー情報を表示したい場合には、以下のような書式になります。
ーp・・・元のファイルのオーナー、グループ、パーミション、タイムスタンプを保持しながらファイルをコピーするオプション
-pコマンドは、業務の中でもかなり使う機会の多いコマンドになります。
ファイルの編集を行う際に元のファイルのコピーをを行う際に元ファイルの権限を保持しながらコピーする必要があります。
その際に-pオプションを使用し、オーナー、グループ、パーミション、タイムスタンプを保持しながらファイルのコピーを行います。
権限を保持する理由としては、ファイルの権限によって内容の変更や内容の参照ができるユーザが変わってきます。
ファイルをコピーしたことでファイルを参照できなくなったり、内容の変更ができなくなったりすることを防ぐために権限を保持することは重要になってきます。
例えば、cpファイルをcpbackupとしてコピーする際に元ファイルのオーナー、グループ、パーミッション、タイムスタンプを保持する場合には、以下のような書式になります。
業務でよく使うcpコマンドの流れ
業務の中でcpコマンドを使う機会が多いのですが、その中でも特に多い使い方を紹介します。
ファイルの編集を行う前にcpコマンドでバックアップファイルの作成を行う流れになります。
■実行の流れ
編集ファイルの確認
編集ファイルのバックアップファイルを作成
バックアップファイルが作成されたことを確認
編集ファイルの編集
編集後ファイルとバックアップファイルの差分確認
編集後ファイルの確認
関連コマンド
cpコマンドにコマンドの操作内容が似ているコマンドを紹介していきます。
少しだけ用途が異なるので、やりたいことによってうまく使い分けしましょう。
mvコマンド
mvコマンドはファイルの移動や名前の変更を行う際に使用するコマンドになります。
cpコマンドは、元の場所にファイルが残りますが、mvコマンドは移動なので元の場所にファイルが残らない点がcpコマンドとの違いになります。
■ファイルの移動
■ファイル名変更
rsyncコマンド
コピー元ファイルとコピー先ファイルの差分をコピーできるコマンドになります。
cpコマンドは、ファイルごとのコピーになりますが、rsyncコマンドは、コピー元ファイルとコピー先ファイルの差分のみのコピーになるため、cpコマンドよりも早くコピーを行うことができます。
まとめ
いかがでしたか。
本記事では、linux cpコマンドについて詳しく解説してきました。
cpコマンドの使い方が最初は、難しいと思う方多いと思うのでぜひ、本記事を参考にしてcpコマンドを使ってみてください。
今後もlinuxについての記事を投稿していきますので、宜しくお願い致します。
・cpコマンドのオプション
・業務でよく使うcpコマンドの流れ
・関連コマンド