Linuxで知っておく必要のあるコマンドの1つはcpです。 Linuxではcopyコマンドと呼ばれることが多く、実際にはcopyの略で、名前が示すとおりに機能します。つまり、コピーします。
cpは、ある場所から別の場所にファイルをコピーするために使用されます。 cpを使用して、ディレクトリ全体を新しい場所にコピーすることもできます。複数のファイルやディレクトリをコピーするためにも使用できます。
7Linuxでのcpコマンドの使用例
さまざまな目的でcpコマンドを使用する方法を見てみましょう:
1。ファイルをコピーする方法
最も簡単な例は、ファイルをコピーすることです。これを行うには、ソースファイルと宛先ディレクトリまたはファイルを指定するだけです。
cp source_file target_directory/target_file
上記の例では、target_filleがtarget_directoryに存在しない場合、target_fileが作成されます。
ただし、new_fileがすでに存在する場合は、確認せずに上書きします。つまり、既存のターゲットファイルの内容がソースファイルの内容に合わせて変更されます。
このチュートリアルの後半で、ファイルの上書きに対処する方法を説明します。
覚えておいてください :デフォルトでは、ターゲットファイルがすでに存在する場合、cpコマンドは上書きします。この動作は、後で説明する-nまたは-iオプションで変更できます。
2。複数のファイルをコピーする方法
複数のファイルを一度に新しい場所にコピーする場合は、次の方法で行うことができます。
cp file1 file2 file3 fileN target_directory
これにより、指定したすべてのファイルがターゲットディレクトリにコピーされます。ターゲットディレクトリにソースファイルの名前と一致するファイルがある場合、それは上書きされます。
3。ファイルのコピー中に上書きを処理する複数の方法
おそらく、既存のターゲットファイルが上書きされることを常に望んでいるとは限らず、それは完全に論理的です。
既存のファイルの上書きを防ぐために、-nオプションを使用できます。このように、cpは既存のファイルを上書きしません。
cp -n source_file target_directory
ただし、一部のファイルを上書きしたい場合があります。インタラクティブオプション-iを使用すると、既存のファイルを上書きするかどうかを尋ねられます。
cp -i source_file target_directory
cp: overwrite 'target_directory/source_file'?
既存のファイルを上書きする場合はyを、上書きしない場合はnを入力できます。
自動バックアップを作成するためのオプションもあります。 cpコマンドで-bオプションを使用すると、既存のファイルが上書きされますが、その前に、上書きされたファイルのバックアップが作成されます。
cp -b file.txt target_dir/file.txt
ls target_dir
file.txt file.txt~
ファイルのバックアップは〜で終了します。
更新オプション-uを使用することもできます 上書きを扱うとき。 -uオプションを使用すると、ソースファイルが既存のファイルよりも新しい場合、またはターゲットディレクトリに存在しない場合にのみ、ソースファイルが新しい場所にコピーされます。
要約すると:
- -i:上書きする前に確認してください
- -n:上書きなし
- -b:バックアップによる上書き
- -u:ターゲットファイルが古いか存在しない場合は上書きします
4。 Linuxでディレクトリをコピーする方法
cpコマンドを使用して、すべてのファイルとサブディレクトリを含むLinuxのディレクトリをコピーすることもできます。ここでは、再帰を表す-rオプションを使用する必要があります。
cp -r source_dir target_dir
これにより、source_dir全体がtarget_dirにコピーされます。これで、source_dirはtarget_dirのサブディレクトリになります。
ls target_dir
source_dir
5。ディレクトリ自体ではなく、ディレクトリのコンテンツのみをコピーする方法
前の例では、ディレクトリ全体を新しい場所にコピーしました。
ただし、ソースディレクトリの内容をターゲットディレクトリにコピーするだけの場合は、/を追加する必要があります。ソースディレクトリの最後にあります。これは、ソースディレクトリのコンテンツのみをコピーすることを示します。
例を挙げて見てみましょう:
ls source_dir
source_file_1 source_file2
次に、ソースディレクトリのコンテンツをコピーします:
cp -r source_dir/. target_dir
ここでターゲットディレクトリの内容を確認すると、ソースディレクトリの内容のみがコピーされていることがわかります。
ls target_dir
source_file_1 source_file2
6。複数のディレクトリをコピーする方法
Linuxのcpコマンドを使用して、一度に複数のディレクトリをコピーすることもできます。
単一のディレクトリの場合と同じように使用してください。
cp -r source_dir1 source_dir2 source_dir3 target_dir
ターゲットディレクトリとして使用されるのは、常にコマンドの最後の引数です。
複数のディレクトリのコンテンツのみを一度にコピーする場合は、それも実行できます。
cp -r source_dir1/. source_dir2/. source_dir3/. target_dir
実際、ディレクトリ、そのコンテンツ、およびファイルを完全に混在させることができます。
cp -r source_dir1 source_dir2/. source_file target_dir
ヒント :オプション-vを指定して冗長モードを使用すると、コピーされているファイルを確認できます。
7。コピー中に属性を保持する方法
ファイルを新しい場所にコピーすると、ファイルのアクセス許可やファイルのタイムスタンプなどの属性が変更されます。
元のファイルの属性を保持する場合は、オプション-pを使用してファイルをコピーできます。
例を挙げて見てみましょう。
ls -l /etc/services
-rw-r--r-- 1 root root 19183 Dec 26 2016 /etc/services
このファイルを正常にコピーしようとすると、その属性が変更されます:
cp /etc/services .
ls -l services
-rwxrwxrwx 1 abhishek abhishek 19183 Nov 25 20:45 service
ただし、オプションpを使用すると、コピーされたファイルはモード、所有権、およびタイムスタンプを保持します。
cp -p /etc/services .
ls -l services
-rw-r--r-- 1 abhishek abhishek 19183 Dec 26 2016 services
ご覧のとおり、-pオプションを使用して、ソースファイルのアクセスモードとタイムスタンプを保持しました。
ちょっと待って!ソースファイルの所有権も保持することは想定されていませんでしたか?ただし、ここでは、ソースファイルの所有者(ルート)がabhishekに変更されています。
これは、rootだけがrootが所有するファイルの所有権を変更する権限を持っているためです。 rootが所有していないファイルで-pオプションを使用すると、所有権が保持されます。または、sudoを使用してコマンドを実行し、rootが所有するファイルの所有権を保持することもできます。
保存する属性を指定することもできます。ただし、その場合は–preserveオプションを使用する必要があります。
cp --preserve=timestamp /etc/services .
ls -l services
-rw-r--r-- 1 abhishek abhishek 19183 Dec 26 2016 services
上記の出力からわかるように、ソースファイルのタイムスタンプのみが保持されています。
マニュアルページを参照して、cpコマンドをさらに詳しく調べることができます。ここに示す例は、Linuxユーザー、システム管理者、またはソフトウェア開発者として使用する最も一般的な例です。
このチュートリアルが気に入った場合は、ソーシャルメディアやさまざまなフォーラムでこの記事を共有してください。