【Linuxコマンド入門】cpコマンドの使い方!

linux command Linuxコマンド

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オプションが必要だった
・様々なオプションを組み合わせることで、柔軟なコピー操作が可能だった

コメント

タイトルとURLをコピーしました