Linuxユーザーであるため、ファイルとディレクトリのコピーは、最も一般的な日常業務の1つです。task.cpコマンドは、コマンドラインを使用してファイルとディレクトリをあるローカルの場所から別の場所にコピーするために使用されます。 cpコマンドは、オペレーティングシステムのようなほとんどすべてのUnixおよびLinuxで使用できます
この記事では、特にLinux初心者向けの16の便利なcpコマンドの例を示します。 cpコマンドの基本的な構文は次のとおりです
ファイルを別のファイルにコピーする
#cp {options} source_file target_file
ファイルを別のディレクトリまたはフォルダにコピーします
#cp {options} source_file target_directory
ディレクトリをディレクトリにコピー
#cp {options} source_directory target_directory
cpコマンドの実際の例に飛び込みましょう
例:1)ファイルをターゲットディレクトリにコピーします
バックアップの目的で/etc/passwdファイルを/mnt/ backupディレクトリにコピーしたいとします。そのため、以下のcpコマンドを実行します。
[email protected]:~# cp /etc/passwd /mnt/backup/ [email protected]:~#
以下のコマンドを使用して、コピーされているかどうかを確認します。
[email protected]:~# ls -l /mnt/backup/ total 4 -rw-r--r-- 1 root root 2410 Feb 3 17:10 passwd [email protected]:~#
例:2複数のファイルを同時にコピーする
複数(/ etc / passwd、/ etc / group、/ etc / shadow)を同時にターゲットディレクトリ(/ mnt / backup)にコピーしたいとします
[email protected]:~# cp /etc/passwd /etc/group /etc/shadow /mnt/backup/ [email protected]:~#
例:3)ファイルをインタラクティブにコピーする(-i)
ある場所から別の場所にファイルをインタラクティブにコピーする場合は、cpコマンドで「-i」オプションを使用します。インタラクティブオプションは、宛先ディレクトリにすでに同じファイルがある場合にのみ機能します。例を以下に示します。
[email protected]:~# cp -i /etc/passwd /mnt/backup/ cp: overwrite '/mnt/backup/passwd'? y [email protected]:~#
上記のコマンドでは、コピー操作を許可するために手動で「y」と入力する必要があります
例:4)コピーコマンド中の詳細出力(-v)
cpコマンドの詳細な出力が必要な場合は、「-v」オプションを使用します。例を以下に示します
[email protected]:~# cp -v /etc/fstab /mnt/backup/ '/etc/fstab' -> '/mnt/backup/fstab' [email protected]:~#
インタラクティブモードと詳細モードの両方を使用する場合は、オプション「-iv」を使用します
[email protected]echi:~# cp -iv /etc/fstab /mnt/backup/ cp: overwrite '/mnt/backup/fstab'? y '/etc/fstab' -> '/mnt/backup/fstab' [email protected]:~#
例:5)ディレクトリまたはフォルダのコピー(-rまたは-R)
ディレクトリをある場所から別の場所にコピーするには、 -rを使用します または-R cpコマンドのオプション。 linuxtechiユーザーのホームディレクトリを「/mn/backup」にコピーするとします。
[email protected]:~# cp -r /home/linuxtechi /mnt/backup/ [email protected]:~#
上記のコマンドで、-rオプションを指定すると、ファイルとディレクトリが再帰的にコピーされます。
次に、ターゲットの場所にあるlinuxtechiディレクトリの内容を確認します。
[email protected]:~# ls -l /mnt/backup/linuxtechi/ total 24 drwxr-xr-x 2 root root 4096 Feb 3 17:41 data -rw-r--r-- 1 root root 7 Feb 3 17:41 file_1.txt -rw-r--r-- 1 root root 7 Feb 3 17:41 file_2.txt -rw-r--r-- 1 root root 7 Feb 3 17:41 file_3.txt -rw-r--r-- 1 root root 7 Feb 3 17:41 file_4.txt -rw-r--r-- 1 root root 7 Feb 3 17:41 file_5txt -rw-r--r-- 1 root root 0 Feb 3 17:41 file_5.txt [email protected]:~#
例:6)コピー中にファイルとディレクトリをアーカイブする(-a)
cpコマンドを使用してディレクトリをコピーする場合、通常は-rまたは-Rオプションを使用しますが、-rオプションの代わりに、コピー中にファイルとディレクトリをアーカイブする「-a」を使用できます。例を以下に示します。
[email protected]:~# cp -a /home/linuxtechi /mnt/backup/ [email protected]:~# ls -l /mnt/backup/linuxtechi/ total 24 drwxr-xr-x 2 root root 4096 Feb 3 17:41 data -rw-r--r-- 1 root root 7 Feb 3 17:39 file_1.txt -rw-r--r-- 1 root root 7 Feb 3 17:39 file_2.txt -rw-r--r-- 1 root root 7 Feb 3 17:39 file_3.txt -rw-r--r-- 1 root root 7 Feb 3 17:39 file_4.txt -rw-r--r-- 1 root root 7 Feb 3 17:40 file_5txt -rw-r--r-- 1 root root 0 Feb 3 17:39 file_5.txt [email protected]:~#
例:7)ソースファイルがターゲットファイル(-u)よりも新しい場合にのみコピーします
ソースファイルが宛先ファイルよりも新しい場合にのみファイルをコピーしたいというシナリオがいくつかあります。これは、「 -u」を使用して簡単に実現できます。 cpコマンドの」オプション。
例:6では、linuxtechiホームディレクトリを/ mnt / backupフォルダにコピーしました。linuxtechiホームフォルダには5つのtxtファイルがあり、そのうちのいくつかを編集してから、「cp-u」を使用してすべてのtxtファイルをコピーします。
[email protected]:~# cd /home/linuxtechi/ [email protected]:/home/linuxtechi# echo "LinuxRocks" >> file_1.txt [email protected]:/home/linuxtechi# echo "LinuxRocks" >> file_4.txt [email protected]:/home/linuxtechi# cp -v -u file_*.txt /mnt/backup/linuxtechi/ 'file_1.txt' -> '/mnt/backup/linuxtechi/file_1.txt' 'file_4.txt' -> '/mnt/backup/linuxtechi/file_4.txt' [email protected]:/home/linuxtechi#
例:8)コピー中に既存のファイルを上書きしないでください(-n)
コピー中に既存の宛先ファイルを上書きしたくないシナリオがいくつかあります。これは、「cp」コマンドのオプション「-n」を使用して実行できます
[email protected]:~# cp -i /etc/passwd /mnt/backup/ cp: overwrite '/mnt/backup/passwd'?
上記のコマンドでわかるように、既存のファイルを上書きするように求められます。-nを使用すると、上書きのプロンプトは表示されず、既存のファイルも上書きされません。
[email protected]:~# cp -n /etc/passwd /mnt/backup/ [email protected]:~#
例:9)cpコマンド(-s)を使用したシンボリックリンクの作成
cpコマンドを使用してコピーする代わりに、ファイルのシンボリックリンクを作成するとします。このようなシナリオでは、cpコマンドで「-s」オプションを使用します。例を以下に示します
。[email protected]:~# cp -s /home/linuxtechi/file_1.txt /mnt/backup/ [email protected]:~# cd /mnt/backup/ [email protected]:/mnt/backup# ls -l file_1.txt lrwxrwxrwx 1 root root 27 Feb 5 18:37 file_1.txt -> /home/linuxtechi/file_1.txt [email protected]:/mnt/backup#
例:10)cpコマンド(-l)を使用したハードリンクの作成
cpコマンドを使用してコピーする代わりにファイルのハードリンクを作成する場合は、「-l」オプションを使用します。例を以下に示します
[email protected]:~# cp -l /home/linuxtechi/devops.txt /mnt/backup/ [email protected]:~#
ハードリンクでわかっているように、ソースファイルとリンクファイルのiノード番号は同じです。次のコマンドを使用してこれを確認しましょう。
[email protected]:~# ls -li /mnt/backup/devops.txt 918196 -rw-r--r-- 2 root root 37 Feb 5 20:02 /mnt/backup/devops.txt [email protected]:~# ls -li /home/linuxtechi/devops.txt 918196 -rw-r--r-- 2 root root 37 Feb 5 20:02 /home/linuxtechi/devops.txt [email protected]:
例:11)ソースから宛先への属性のコピー(–属性のみ)
cpコマンドを使用してソースから宛先に属性のみをコピーする場合は、オプション「 –属性のみ」を使用します 」
# cp --attributes-only /home/linuxtechi/distributions.txt /mnt/backup/ # ls -l /home/linuxtechi/distributions.txt -rw-r--r-- 1 root root 41 Feb 5 19:31 /home/linuxtechi/distributions.txt # ls -l /mnt/backup/distributions.txt -rw-r--r-- 1 root root 0 Feb 5 19:34 /mnt/backup/distributions.txt #
上記のコマンドでは、distribution.txtファイルをlinuxtechiホームディレクトリから/ mnt / backupフォルダーにコピーしました。気付いた場合は、属性のみがコピーされ、コンテンツはスキップされます。 / mn/backupフォルダーの下のdistribution.txtのサイズはゼロバイトです。
例:12)コピー中に既存の宛先ファイルのバックアップを作成する(–backup)
cpコマンドのデフォルトの動作は、同じファイルが存在する場合に宛先のファイルを上書きすることです。コピー操作中に既存の宛先ファイルのバックアップを作成する場合は、「 –backup」を使用します。 ‘オプション、例を以下に示します
[email protected]:~# cp --backup=simple -v /home/linuxtechi/distributions.txt /mnt/backup/distributions.txt '/home/linuxtechi/distributions.txt' -> '/mnt/backup/distributions.txt' (backup: '/mnt/backup/distributions.txt~') [email protected]:~#
お気づきの方もいらっしゃると思いますが、バックアップが作成され、ファイルの最後にチルダ記号が追加されています。バックアップオプションは次のパラメータを受け入れます
- なし、オフ –バックアップを作成しないでください
- 番号付き、t –番号付きのバックアップを作成する
- 既存、なし –番号付きのバックアップが存在する場合は番号付き、それ以外の場合は単純
- シンプル、決して –常に簡単なバックアップを作成する
例:13)コピー中にモード、所有権、タイムスタンプを保持する(-p)
コピー中にモード、所有権、タイムスタンプなどのファイル属性を保持する場合は、cpコマンドで-pオプションを使用します。例を以下に示します。
[email protected]:~# cd /home/linuxtechi/ [email protected]:/home/linuxtechi# cp -p devops.txt /mnt/backup/ [email protected]:/home/linuxtechi# ls -l devops.txt -rw-r--r-- 1 root root 37 Feb 5 20:02 devops.txt [email protected]:/home/linuxtechi# ls -l /mnt/backup/devops.txt -rw-r--r-- 1 root root 37 Feb 5 20:02 /mnt/backup/devops.txt [email protected]:/home/linuxtechi#
例:14)コピー中はソース内のシンボリックリンクをたどらないでください(-P)
コピー中にソースのシンボリックリンクをたどりたくない場合は、cpコマンドで-Pオプションを使用します。例を以下に示します
[email protected]:~# cd /home/linuxtechi/ [email protected]:/home/linuxtechi# ls -l /opt/nix-release.txt lrwxrwxrwx 1 root root 14 Feb 9 12:28 /opt/nix-release.txt -> os-release.txt [email protected]:/home/linuxtechi# [email protected]:/home/linuxtechi# cp -P os-release.txt /mnt/backup/ [email protected]:/home/linuxtechi# ls -l /mnt/backup/os-release.txt -rw-r--r-- 1 root root 35 Feb 9 12:29 /mnt/backup/os-release.txt [email protected]:/home/linuxtechi#
注: cpコマンドのデフォルトの動作は、コピー中にソース内のシンボリックリンクをたどることです。
例:15)-fオプションを使用してファイルとディレクトリを強制的にコピーします
既存の宛先ファイルを開いて削除できないシナリオがいくつかあります。また、既存の宛先ファイルの代わりにコピーできる正常なファイルがある場合は、cpコマンドと-fオプションを使用します
[email protected]:/home/linuxtechi# cp -f distributions.txt /mnt/backup/ [email protected]:/home/linuxtechi#
例:16)cpコマンドのスパースオプションを使用してスパースファイルをコピーする
スパースは、物理ディスクブロックを消費しないゼロバイトの長いシーケンスを含む通常のファイルです。スパースファイルの利点の1つは、ディスクスペースをあまり消費せず、そのファイルの読み取り操作が非常に高速になることです。
「ubuntu-cloud.img」という名前のまばらなクラウドイメージがあるとしましょう
[email protected]:/home/linuxtechi# du -sh ubuntu-cloud.img 12M ubuntu-cloud.img [email protected]:/home/linuxtechi# cp --sparse=always ubuntu-cloud.img /mnt/backup/ [email protected]:/home/linuxtechi# du -sh /mnt/backup/ubuntu-cloud.img 0 /mnt/backup/ubuntu-cloud.img [email protected]:/home/linuxtechi#
cpコマンドでスパースパラメータを使用している間は、さまざまなオプションを使用できます。
- sparse =auto
- まばら-常に
- sparse =never
これですべてです。cpコマンドをより効果的に理解するのに役立つことを願っています。フィードバックやコメントを共有してください