HOWTO · Linux

Linux ターミナルを使ってファイルやディレクトリをコピーする方法

Linux ターミナルを使って cp や rsync コマンドでファイルやディレクトリをコピーすることができます。

Linux Terminal を使って cprsync コマンドでファイルやディレクトリをコピーすることができます。一般的には cp コマンドがファイルをコピーするのに用いられ、rsync コマンドがディレクトリをコピーするのに用いられます。

cp コマンドを使ったファイルのコピー

Linux や Unix オペレーティングシステムでは、ファイルやディレクトリのコピーに cp コマンドを用います。

ファイル abc.txt の内容を別のファイル backup.txt にコピーするには、以下のコマンドを用います。

cp abc.txt backup.txt

abc.txt の内容を backup.txt にコピーします。ここでは、両方のファイルが現在の作業ディレクトリにある必要があります。

コピー先のファイルが既に存在する場合は、コピー先のファイルの内容が上書きされます。

cp コマンドに -i フラグを追加すると、コピー前に確認画面が表示されるようになります。

cp -i abc.txt backup.txt

出力:

cp: overwrite 'backup.txt'?

ファイルをコピーしたい場合は、Y キーを押して Enter を押す。

cp コマンドを使って何が行われているかを知るには、cp コマンドで -v フラグを使用するとよい。

cp -v abc.txt backup.txt

出力:

'abc.txt' -> 'backup.txt'

abc.txt の内容が backup.txt にコピーされていることを示します。

cp コマンドを使ってファイルをディレクトリにコピーする

ファイルをディレクトリにコピーするには、cp コマンドを用います。cp コマンドの第 1 引数にはコピーするファイルの名前を、第 2 引数にはファイルをコピーするディレクトリの絶対パスまたは相対パスを指定します。

cp abc.txt ./test

これにより、現在の作業ディレクトリにあるファイル abc.txt を現在の作業ディレクトリ test の中のフォルダにコピーします。

親ファイルとは別の名前のファイルを特定のディレクトリにコピーするには、ファイル名を以下のように指定します。

cp abc.txt ./test/test.txt

ファイル abc.txt をフォルダ testtest.txt という名前でコピーします。

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

複数のファイルとディレクトリを特定のディレクトリにコピーするには、cp コマンドを用いて、ソースファイルとディレクトリをすべて指定し、最後にコピー先のディレクトリを指定します。

cp abc.txt backup.txt test backup

この例では、ファイル abc.txtbackup.txt とフォルダ testbackup フォルダにコピーされています。

また、cp コマンドはパターンマッチングも可能です。

cp *.txt backup

これにより、現在の作業ディレクトリにある拡張子が .txt のファイルをすべて backup フォルダにコピーすることができます。

cp コマンドを使ったディレクトリのコピー

ディレクトリとそのサブディレクトリとファイルをコピー先のディレクトリにコピーするには、cp コマンドと一緒に -r または -R フラグを使用します。

cp -r pp Project

これにより、pp ディレクトリ全体とそのサブディレクトリとファイルが Project ディレクトリにコピーされます。

この例では、Project ディレクトリの中に pp ディレクトリが存在することになります。

しかし、ファイルとサブディレクトリだけをコピーしたい場合は、-R フラグと一緒に -T フラグを使用します。

cp -RT pp Project

これにより、pp ディレクトリのサブディレクトリとファイルが Project ディレクトリにコピーされます。

rsync コマンドを使ったファイルとディレクトリのコピー

rsync は 2つのホスト間でファイルとディレクトリを同期させるためのコマンドラインユーティリティです。ソースパスとデスティネーションパスの両方がローカルホストを表す場合、rsync コマンドはコピーコマンドのように振る舞う。

rsync -a abc.txt backup.txt

これは abc.txt の内容を backup.txt にコピーします。

ここで、-a フラグは、コピー中にシンボリックリンク、変更時間、グループ、所有権、パーミッションを保持するためのものです。

同様に、ディレクトリを別のディレクトリにコピーすることもできます。

rsync -a /abc /backup-abc

ディレクトリ abc の内容をコピー先のディレクトリ backup-abc にコピーします。

ここで、末尾のスラッシュ / を省略すると、コピー元のディレクトリはコピー先のディレクトリの中にコピーされます。