目次:
cp
コマンドを使用したファイルのコピー- ファイルをディレクトリにコピーする
- 複数のファイルをコピーする
cp
コマンドを使用したディレクトリのコピーrsync
コマンドを使用したファイルとディレクトリのコピー- 結論
ファイルとディレクトリのコピーは、コマンドラインで作業するときに実行する最も一般的なタスクの1つです。 Linuxには、
cp
および
rsync
が最も広く使用されているツールであるファイルをコピーするためのコマンドがいくつかあります。
ファイルをコピーするときは
cp
コマンドを使用し、ディレクトリをコピーするときは
rsync
コマンドを使用するのが一般的な方法です。
ファイルとディレクトリをコピーできるようにするには、少なくともソースファイルの読み取り権限と宛先ディレクトリの書き込み権限が必要です。
cp
コマンドを使用したファイルのコピー
LinuxおよびUnixオペレーティングシステムでは、
cp
コマンドを使用してファイルとディレクトリをコピーします。
最も単純な使用例は、現在の作業ディレクトリにファイルをコピーすることです。 たとえば、
file.txt
という名前のファイルを現在のディレクトリの
file_backup.txt
という名前のファイルにコピーするには、次のコマンドを実行します。
cp file.txt file_backup.txt
宛先ファイルが存在する場合、上書きされます。 ファイルを上書きする前に確認プロンプトを表示するには、
-i
オプションを使用します。
cp -i file.txt file_backup.txt
デフォルトでは、
cp
コマンドを使用してファイルをコピーする場合、新しいファイルはコマンドを実行するユーザーが所有します。
-p
オプションを使用して、ファイルモード、所有権、およびタイムスタンプを保持します。
cp -p file.txt file_backup.txt
便利な別のオプションは
-v
です。 このオプションを使用すると、コマンドは実行中の内容を出力します。
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
ファイルをディレクトリにコピーする
ファイルをディレクトリにコピーするには、ディレクトリへの絶対パスまたは相対パスを指定します。 宛先ディレクトリを省略すると、ファイルは現在のディレクトリにコピーされます。
次の例では、ファイル
file.txt
を
/backup
ディレクトリにコピーしています。
cp file.txt /backup
宛先としてディレクトリ名のみを指定すると、コピーされたファイルは元のファイルと同じ名前になります。
cp file.txt /backup/new_file.txt
上記のコマンドは、指定されたディレクトリに
new_file.txt
として
new_file.txt
ます。
複数のファイルをコピーする
複数のファイルとディレクトリを一度にコピーするには、ソースファイルとディレクトリの名前を指定し、最後の引数として宛先ディレクトリを指定します。
cp file.txt dir file1.txt file2.txt dir1
複数のファイルをコピーする場合、宛先はディレクトリでなければなりません。
cpコマンドを使用すると、パターンマッチングを使用することもできます。 たとえば、現在のディレクトリから
/backup
ディレクトリにすべての
.png
ファイルをコピーするには、次を使用します。
cp
コマンドを使用したディレクトリのコピー
すべてのファイルとサブディレクトリを含むディレクトリをコピーするには、
-R
または
-r
オプションを使用します。 次の例では、
Pictures
ディレクトリを
Pictures
にコピーしています。
cp -R Pictures Pictures_backup
上記のコマンドは、宛先ディレクトリを作成し、すべてのファイルとサブディレクトリをソースから宛先ディレクトリに再帰的にコピーします。
宛先ディレクトリがすでに存在する場合、ソースディレクトリ自体とそのすべてのコンテンツが宛先ディレクトリにコピーされます。 ファイルとサブディレクトリのみをコピーし、ターゲットディレクトリはコピーしない場合は、
-T
オプションを使用します。
cp -RT Pictures Pictures_backup
ファイルをコピーするときに使用されるオプションは、ディレクトリをコピーするときにも使用できます。 主な違いは、ディレクトリをコピーするときに、
-R
オプションを使用する必要があることです。
rsync
コマンドを使用したファイルとディレクトリのコピー
rsync
は、2つの場所の間でファイルとディレクトリを同期する高速で汎用性の高いコマンドラインユーティリティです。 ファイルをローカルおよびリモートの場所にコピーするために使用できます。
rsync
は、その動作のあらゆる側面を制御する多くのオプションが含まれています。 最も便利なオプションは
-a
。ディレクトリを再帰的にコピーし、特別なデバイスとブロックデバイスを転送し、シンボリックリンク、変更時間、グループ、所有権、アクセス許可を保持します。
1つのファイルを別の場所にコピーするには、次のコマンドを実行します。
rsync -a file.txt file_backup.txt
宛先ファイルが存在する場合、
rsync
はそれを上書きします。
同じコマンドを使用してディレクトリをコピーできます。
rsync -a /var/www/public_html/ /var/www/public_html_backup/
rsync
は、末尾がスラッシュ
/
で終わるソースディレクトリを
rsync
ます。 ソースディレクトリに末尾のスラッシュを追加すると、コマンドはソースディレクトリの内容のみを宛先ディレクトリにコピーします。 末尾のスラッシュが省略されると、
rsync
はソースディレクトリを宛先ディレクトリ内にコピーします。 最も安全なオプションは、宛先とソースの両方に常に末尾のスラッシュ
/
を含めることです。
rsync
詳細については、次の記事を参照してください。
結論
このガイドでは、
cp
および
rsync
ユーティリティを使用して、LinuxおよびUnixベースのシステムでファイルとディレクトリをコピーする方法を示しました。