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