Linuxで使えるファイル・ディレクトリをコピーするコマンド、cpコマンドの使い方、概要をまとめました。
本記事では以下のLinuxのディストリビューションでのcpコマンドの使い方・概要をまとめて紹介します。
cpコマンドの概要
cpコマンドはファイル・ディレクトリをコピーするのに使用するコマンドです。
以下の形式でcpコマンドを実行します。
cp [オプション] <コピー元ファイル/ディレクトリ> <コピー先ディレクトリ>
cpコマンドでファイルをコピーする
たとえば以下のようにコマンドを実行して、cpコマンドでファイル(testfile.txt)をコピー先のディレクトリ(/home/userA)にコピーします。
cp testfile.txt /home/userA/
ディレクトリをコピーする
ディレクトリーをコピーするには、オプションに「-r」を指定します。
以下のコマンドの実行例では、dir1ディレクトリを、/home/userA/ディレクトリ配下へコピーします。
cp -r dir1 /home/userA/
ファイル・ディレクトリのパーミッションもコピーするには-pオプションを使用する
コピーするファイル・ディレクトリに設定されているパーミッションをコピー先のファイル・ディレクトリにも引き継ぐには-pオプションを使用します。
-pオプションでは、所有者やタイムスタンプの情報もコピーされます。
cp -p testfile2.txt /home/userA
ディレクトリのパーミッションを保持してコピーするには-rpオプションを指定します。
cp -rp dir2 /home/userA/
cpコマンドのオプション
cpコマンドのオプションを紹介します。
| オプション | 非省略 | 説明 |
| -i | –interactive | コピー先ファイルを上書きする際に確認を表示する。-n オプション指定時は無視される。 |
| -f | –force | コピー先のファイルを開けない場合、そのファイルを一度削除してからコピーを実施。-n オプション指定時は無視される。 |
| -n | –no-clobber | コピー先のファイルが存在する場合、コピーをスキップします。警告メッセージも表示しません。GNU cp 9.5 からは非推奨。 |
| -R もしくは -r | –recursive | ディレクトリをコピーする際に指定するオプション。ディレクトリの階層構造を再帰的にコピーする。 |
| -a | –archive | -dR –preserve=all オプションと同じ処理を実施します。 シンボリックリンク、ハードリンク、モード、所有者、タイムスタンプなどの属性情報をすべてコピーします。 |
| -p | --preserve=mode,timestamps,ownership | モード(パーミッション)、所有者、グループ、タイムスタンプ情報も含めてコピーします。–preserve=mode,timestamps,ownership と同じ処理になります。 |
| –preserve[=ATTR_LIST] | モード(パーミッション)、所有者、タイムスタンプなどを保持したままコピーを実施します。ATTR_LIST には下記を指定することができます。カンマ(,)区切りで複数指定することも可能。mode : モード(パーミッション)timestamps : タイムスタンプ(更新日時)ownership : 所有者・グループlinks : ハードリンクの関係context : SELinuxコンテキストxattr : 拡張属性(ファイルシステムがサポートしている場合)all : すべて | |
| –parents | コピー元ファイルの親ディレクトリの階層構造を保ったままコピーする。 | |
| –backup[=CONTROL] | [=CONTROL]には以下を指定できます。none : バックアップしないsimple : 末尾に ~ をつける。2世代前のバックアップは削除される。numbered : ~ の代わりに .~1~, .~2~ のような番号をつけるexisting : 既存バックアップに .~1~ 等があれば numbered、なければ simple で動作する | |
| -b | --backup=existing | -bオプションは--backup=existing と同じ動作をします。 |
| -S | –suffix=SUFFIX | –backup オプションで作成するファイル末尾の ~ を別のサフィックス(ファイルの後ろにつく文字列)に変更する。 |
| -s | –symbolic-link | ファイル・ディレクトリをコピーする処理をファイル・ディレクトリに対するシンボリックリンクを作成する処理として実施するオプション。 |
| -l | –link | ファイル・ディレクトリをコピーする処理をファイル・ディレクトリに対するハードリンクを作成する処理として実施するオプション。 |
| -d | ハードリンクやシンボリックリンクをコピーするオプション。 |

