この投稿は、Linuxcpコマンドに関するものです。
ファイルのコピーは、オペレーティングシステムでファイルを処理する際の最も一般的なタスクの1つです。デスクトップショートカットのCTRL+cをコピーに使用し、CTRL+vを貼り付けに使用することも非常に一般的です。ただし、Linuxターミナルでは、実行するのもかなり簡単なタスクであり、そのためにcpコマンドを使用します。
Linuxcpコマンド
cpコマンドは、1つ以上のファイルまたはフォルダーをある場所から別の場所にコピーするだけです。ただし、他のLinuxコマンドと同様に、オプションを使用することで初期の動作を変更できます。
同様に、cpコマンドはGNU utilsの一部であるため、すべてのLinuxディストリビューションにインストールされて準備ができています。したがって、ターミナルエミュレータを開いて作業を開始するだけです。
Cpコマンド:基本的な構文とオプション
cpコマンドは、その機能も単純であるため、非常に簡単に使用できます。 UNIXファミリのすべてのコマンドと同様に、使用するための基本的な構文があります。
cpコマンドの場合、基本的な構文は次のとおりです。
cp [option]... source... directory
ここで、sourceは、ディレクトリと呼ばれる宛先にコピーされるファイルまたはフォルダーを指します。
コマンドに関するオプションといくつかの基本情報は、次のコマンドを使用して表示できます。
:~$ cp --help
そこで、いくつかの異なるオプションがあることがわかります。最も重要なものは次のとおりです。
オプション | GNUutilsによる説明 |
-a | コピー内の元のファイルの構造と属性を可能な限り保持します |
-d | シンボリックリンクを指すファイルをコピーするのではなく、シンボリックリンクとしてコピーし、コピー内のソースファイル間のハードリンクを保持します。 |
-fまたは–force | このオプションは、宛先フォルダーが書き込みに使用できない場合でも、コピーを強制します。 |
-iまたは–interactive | ファイルが上書きされるたびにメッセージを表示します。 |
-l </ td> | ディレクトリ以外のコピーの代わりにハードリンクを作成します。 |
-Rまたは-rまたは–recursive | ディレクトリを再帰的にコピーします。デフォルトでは、ソース内のシンボリックリンクをたどらないでください。 |
-sまたは–symbolic-link | この場合、コマンドはフォルダではないすべてのファイルのシンボリックリンクを作成します。これはコピーを置き換えます。 |
-uまたは–update | このオプションは、宛先フォルダーに同じまたは新しい変更タイムスタンプを持つファイルをコピーしません。コピーの更新です。 |
-vまたは–verbose | 各ファイルの名前を印刷してからコピーしてください。 |
ここで、いくつかの例を使用して、Linuxシステムでのcpコマンドの一般的な使用法を示します。
cpコマンドの使用
1つ以上のファイルをフォルダにコピーします
基本から始めましょう。ファイルを特定のフォルダにコピーするために実行するコマンドは次のとおりです。
:~$ cp [file] [destination]
例:
:~$ cp file.txt /home/user/Documents/
上記のコマンドは、Documentsフォルダーのプロンプトと同じ場所にあるfile.txtというファイルをコピーします。
絶対パスを使用して、プロンプトとは異なる場所にあるファイルをコピーすることもできます。
:~$ cp /home/user/Pictures/image.jpg /home/user/Documents
したがって、一度に複数のファイルをコピーする場合は、空白で区切ってください。
:~$ cp file1.txt file2.txt /home/user/Downloads
絶対ルートでも引き続き実行できます。
:~$ cp /home/user/file1.txt /home/user/Pictures/file2.jpg /home/user/Downloads
これが、複数のファイルをコピーできる速度です。
ディレクトリ内のすべてのファイルをフォルダにコピーします
あるフォルダから別のフォルダにすべてのファイルをコピーすることもできます。これを行うには、アスタリスク(*)演算子を使用します。例:
:~$ cp * [destination]
または
:~$ cp * /home/users/Documents/folder/
ただし、同じ拡張子を持つすべてのファイルをコピーする場合は、次の方法で行うことができます。
:~$ cp *.txt /home/users/Documents/folder/
つまり、すべての.txtファイルがフォルダにコピーされます。
cpコマンドを使用したディレクトリのコピー
これまで、ファイルをコピーする方法を説明してきましたが、フォルダをコピーしたい場合はどうでしょうか。さて、それはエラーを引き起こします。
「example」という名前のフォルダを/home/ angelo / Documentsにコピーすると、cp省略ディレクトリエラーが発生します
これと同様です:
cpコマンドでフォルダをコピーするには、-rオプションを追加します。例:
:~$ cp -r example/ /home/angelo/Documents/
これにより、フォルダ全体が宛先フォルダにコピーされます。
コピーするファイルをバックアップする
これは非常に便利なオプションです。ファイルをコピーするときは、時間をかけて変更するのが一般的ですが、いつでも元のファイルのコピーを保持できます。
バックアップを作成するには、次のコマンドを使用するだけです。
:~$ cp -ab [file] [destination]
もちろん、必要なファイルとフォルダを指定することもできます。例:
:~$ cp -ab file2.txt /home/angelo/Documents/example/
この場合、2つのオプションを同時に使用しています。最初のものは-aです。ファイルをそれが何であるか、つまりファイルとして明示的に扱います。そして、-bである2つ目は、バックアップを実行することです。
このコマンドの機能は、バックアップを作成し、もう一度コピーを作成する場合は最後に〜を追加することです。これがコピーの元のファイルになります。
:~$ ll /home/angelo/Documents/example
ファイルを上書きする前に確認をリクエストする
ファイル書き込みで発生する可能性のあるエラーを回避するために、-iオプションを使用できます。
このオプションを使用すると、コピー用にファイルを上書きする前に確認するように求められます。これを行うには、コマンドに-iオプションを追加するだけです。
:~$ cp -i file2.txt /home/angelo/Documents/example/
警告は、上書きしている場合にのみ表示されることを忘れないでください。多くのファイルをコピーしても、宛先で同じファイルが呼び出されない場合、何も表示されません。
cpコマンドでファイルを上書きしないようにする
cpコマンドには、コピー中に宛先フォルダー内のファイルが上書きされないようにするオプションがあります。
これを行うには、cpコマンドに-nオプションを追加するだけです。
:~$ cp -n file.txt [destination]
このオプションは、同じ名前のファイルがあることをすでに知っていて、それらを上書きしないようにしたい場合に便利です。一方、同様のファイルが存在するかどうかわからない場合にも役立ちます。
ファイル属性を維持しながらコピーを作成する
Unixベースのシステムでは、ファイルには特定の属性があります。そのため、作成者以外のユーザーがコピーまたは移動した場合、これらの属性の値を変更するリスクがあります。それらのいくつかは、変更日とファイルのアクセス許可です。
これを回避するには、cpコマンドに-pオプションを追加します。
:~$ cp -p [file] [destination]
これは、コピー中に属性を保持するのがいかに簡単かです。
cpコマンドを使用したバックアップの更新
cpコマンドを使用して、ファイルを外部メモリなどの別の場所にバックアップすることができます。音楽の入ったフォルダを別の場所にバックアップするとします。これを行うには、次のコマンドを使用します。
:~$ cp -r [music_folder] [destination]
しかし、結局のところ、そのフォルダに新しいファイルを追加していて、それらを再度バックアップしたいと考えています。 cpコマンドがすでにバックアップしたファイルをコピーバックするのを防ぎ、宛先フォルダーにないファイルをコピーするだけです。
いいですね。そのためには、-uまたは–updateオプションを使用します。
:~$ cp -ru [music_folder] [destination]
つまり、このコマンドはフォルダーをコピーし、ソースフォルダーのどのファイルが宛先にあるかを確認します。そして最後に、そうでないものだけをコピーします。
プロセス全体を表示するには、-vオプションを追加することもできます。
:~$ cp -ruv [music_folder] [destination]
したがって、簡単なコマンドでバックアップを更新できます。
最終的な考え
cpコマンドは使いやすいコマンドですが、これを使用して多くの興味深いことができることを確認しました。これはGNUutilsの一部であり、すべてのLinuxディストリビューションで利用できるようになっています。
一方、この投稿では、コマンドで実行できることの一部を学習しました。これはサーバー環境で非常に役立ちますが、オペレーティングシステムの操作をさらに深く理解するためにも役立ちます。