技術は記憶の彼方へと

覚えたつもりですぐに忘れるエンジニアの備忘録

Linuxでファイルやディレクトリをコピーしたい

何かとよく使ってたはずのファイルコピーやディレクトリのコピー
ただ私の中で思ったこと、それは「使うたびに検索してるな、こいつ(自分)」
その時その時では覚えた気になってるのですが、いざ使うってなると結局忘れてる問題に直面したのでここに記録を残しておきます。

目次


ファイルのコピー


ファイルをコピーするには「cp」コマンドを用います。
基本的な構文は、
$ cp コピー元ファイル コピー先ファイル名
となります。
コピー先に指定した名前がなければ指定した名前で保存、指定した名前が存在していれば上書き保存といった形で処理されます。

複数ファイルをコピーするには

当然ですがコピーしたいファイルが1つとは限りません。
複数のファイルを同時にコピーする方法も存在します。
$ cp コピー元ファイル1 コピー元ファイル2 ... コピー先ディレクトリ
としてやれば指定したディレクトリに複数ファイル同時にコピーすることが可能になります。

何かと使うオプション達


cpコマンドを使ってきて比較的よく使ったオプションをいくつか紹介しておきましょう。
もしかしたら利用するかもしれない基本的な子たちです。

interactive

$ cp -i コピー元 コピー先
上書き等が発生する際に確認を取ってくれるオプションになります。
このオプションをつけないと基本的には強制的に上書きされてしまいます。
上書きされてしまうと困る場合も多々あるので私は付けるように気を付けてます。

verbose

$ cp -v コピー元 コピー先
cpコマンドを使ってどんな操作が行われたのかを明示してくれるオプションになります。
実際に行われた操作が分かるので学びだした当初は重宝した記憶がありますが、慣れてくると面倒になって無視してるような気もします。(良くないこと)

preserve

$ cp -p コピー元 コピー先
指定した属性を保持するオプションになります。
何も指定しない場合、パーミッション・所有者・タイムスタンプが保持されます。
ほかにもコンテキスト情報やディレクトリ内のハードリンク、ファイルシステムの拡張属性等が保持できるようです。(かくいう私もここまで指定したことはなく、基本は無指定で保持できる情報を保持させることが多い)

recursive

$ cp -r コピー元ディレクトリ コピー先
ディレクトリをコピーするオプションになります。
ディレクトリの中身ごとまとめてコピーしてくれます。
サブディレクトリが存在する場合でもまとめてコピーしてくれます。

最後に


今回はコピーのコマンドについて軽く自分のおさらいも兼ねて記事にしてみました。
何かとよく使うコマンドですし、この記事が何か力になれば幸いです。

次回はよく似たコマンドとして紹介される「mv」コマンドのことについて書いてみようかなぁとか思ってます。