Linuxコマンドのcpコマンドの使い方について書いています。
cpコマンドを使うことで、ファイルやディレクトリをコピーすることができます。
今回載せているコマンドはUbuntu 24.04.1で確認しました!
cpコマンドの使い方
cpコマンドを使うと、ファイルやディレクトリをコピーできます。
よく使うファイルコピーとディレクトリコピーの構文は下記のようになります。
単一ファイルのコピー:
$ cp (オプション) コピー元 コピー先
ディレクトリのコピー:
$ cp -r コピーディレクトリ/ コピー先ディレクトリ/
実際に使ってみる
実際に使ってみます。
まず、lsコマンドで確認すると、下記のようなファイルが存在します。
$ ls -l
total 0
-rw-r--r-- 1 yasuaki yasuaki 0 Jan 19 08:18 source.txt
cpコマンドを使って、source.txt
ファイルをコピーしてみます。
$ cp source.txt test.txt
source.txt
ファイルをtest.txt
という名前でコピーしました。
実行後にlsコマンドで確認すると、下記のようにファイルがコピーされました。
$ ls -l
total 0
-rw-r--r-- 1 yasuaki yasuaki 0 Jan 19 08:18 source.txt
-rw-r--r-- 1 yasuaki yasuaki 0 Jan 19 08:30 test.txt
cpコマンドのサンプル5つ
cpコマンドを使ったサンプルを5つ載せています。
ディレクトリごとコピーする
ディレクトリをコピーするには-r
オプションを使います。
$ cp -r source_dir/ destination_dir/
上書き確認をする
既存のファイルを上書きする前に確認するには-i
オプションを使います。
$ cp -i source.txt destination.txt
ファイルがない場合は、確認がなくコピーされます。
ファイルがある場合には、下記のように確認がでるため、y
を入力してエンターを押すと上書きされます。
$ cp -i source.txt destination.txt
cp: overwrite 'destination.txt'?
ファイルの属性を保持する
ファイルの権限やタイムスタンプなどの属性を保持するには-p
オプションを使います。
$ cp -p source.txt destination.txt
シンボリックリンクの実体をコピーする
シンボリックリンクが指すファイルの実体をコピーするには-L
オプションを使います。
$ cp -L link.txt destination.txt
複数ファイルを一度にコピーする
複数のファイルを一度にディレクトリにコピーすることができます。
$ cp file1.txt file2.txt file3.txt destination_dir/
cpコマンドのオプション一覧
オプション | 説明 |
---|---|
-a, –archive | -dR –preserve=all と同じ |
–attributes-only | ファイルデータをコピーせず、属性のみをコピー |
–backup[=CONTROL] | 既存の宛先ファイルのバックアップを作成 |
-b | –backup と同様だが、引数を受け付けない |
–copy-contents | 再帰的に特殊ファイルの内容をコピー |
-d | –no-dereference –preserve=links と同じ |
–debug | ファイルがどのようにコピーされるかを説明する。-vを含む |
-f, –force | 既存の宛先ファイルが開けない場合、削除して再試行する(-nオプションが使用されている場合は無視される) |
-i, –interactive | 上書き前に確認する(以前の -n オプションを上書き) |
-H | ソース内のコマンドラインシンボリックリンクを追従 |
-l, –link | ファイルをコピーするのではなくハードリンクを作成 |
-L, –dereference | ソース内のシンボリックリンクを常に追従 |
-n, –no-clobber | 既存のファイルを上書きせず、失敗しない(-u または以前の -i オプションを上書き) |
-P, –no-dereference | ソース内のシンボリックリンクを決して追従しない |
-p | –preserve=mode,ownership,timestamps と同じ |
–preserve[=ATTR_LIST] | 指定された属性を保持 |
–no-preserve=ATTR_LIST | 指定された属性を保持しない |
–parents | ディレクトリ内でフルソースファイル名を使用 |
-R, -r, –recursive | ディレクトリを再帰的にコピー |
–reflink[=WHEN] | クローン/CoWコピーを制御 |
–remove-destination | 開く前に既存の宛先ファイルを削除 |
–sparse=WHEN | スパースファイルの作成を制御 |
–strip-trailing-slashes | 各ソース引数から末尾のスラッシュを削除 |
-s, –symbolic-link | コピーするのではなくシンボリックリンクを作成 |
-S, –suffix=SUFFIX | 通常のバックアップサフィックスを上書き |
-t, –target-directory=DIRECTORY | すべてのソース引数をディレクトリにコピー |
-T, –no-target-directory | DESTを通常のファイルとして扱う |
–update[=UPDATE] | どの既存ファイルが更新されるかを制御; UPDATE={all,none,older(default)} |
-u | –update[=older] と同等 |
-v, –verbose | 実行中の操作を説明 |
-x, –one-file-system | このファイルシステムに留まる |
-Z | 宛先ファイルのSELinuxセキュリティコンテキストをデフォルトタイプに設定 |
–context[=CTX] | -Zと同様、またはCTXが指定されている場合はSELinuxまたはSMACKセキュリティコンテキストをCTXに設定 |
–help | このヘルプを表示して終了 |
–version | バージョン情報を出力して終了 |
cpコマンドの使い方まとめ
今回はcpコマンドについて書きました。
記事の内容をまとめると、下記のようになります。
・cpコマンドを使うことで、ファイルやディレクトリをコピーできた
・ディレクトリのコピーには-rオプションが必要だった
・様々なオプションを組み合わせることで、柔軟なコピー操作が可能だった
・ディレクトリのコピーには-rオプションが必要だった
・様々なオプションを組み合わせることで、柔軟なコピー操作が可能だった
コメント