Linux ターミナルを使ってファイルやディレクトリをコピーする方法
-
cp
コマンドを使ったファイルのコピー -
cp
コマンドを使ってファイルをディレクトリにコピーする - 複数のファイルをコピーする
-
cp
コマンドを使ったディレクトリのコピー -
rsync
コマンドを使ったファイルとディレクトリのコピー
Linux Terminal を使って cp
、rsync
コマンドでファイルやディレクトリをコピーすることができます。一般的には 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
をフォルダ test
に test.txt
という名前でコピーします。
複数のファイルをコピーする
複数のファイルとディレクトリを特定のディレクトリにコピーするには、cp
コマンドを用いて、ソースファイルとディレクトリをすべて指定し、最後にコピー先のディレクトリを指定します。
cp abc.txt backup.txt test backup
この例では、ファイル abc.txt
と backup.txt
とフォルダ test
が backup
フォルダにコピーされています。
また、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
にコピーします。
ここで、末尾のスラッシュ /
を省略すると、コピー元のディレクトリはコピー先のディレクトリの中にコピーされます。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn