Linuxターミナルでファイルとディレクトリをコピーする方法

  • cpコマンドは、ファイルをディレクトリにコピーしたり、複数のファイルを1つのディレクトリにコピーしたり、ファイルを異なる名前でディレクトリにコピーしたりするために使用できます。
  • 主にコンピュータ間でファイルを転送するために使用されるrsyncコマンドは、同じPC上のファイルとディレクトリをコピーするためにも使用でき、ファイル転送の詳細な出力を提供します。

他のオペレーティングシステムと同様に、デスクトップインターフェースを使用してLinuxディストリビューションのファイルとディレクトリ(フォルダー)をコピーして貼り付けることができます。しかし、ターミナルでそれらのファイルをコピーすることで時間を節約できます。その方法は次のとおりです。

cpコマンドとは何ですか?

cpコマンドは、Linuxに組み込まれたネイティブのコピーツールです。cpはcopyの略で、Linuxでファイルとディレクトリをコピーするために使用されます。cpを使用して、ファイルをディレクトリにコピーしたり、1つのディレクトリを別のディレクトリにコピーしたり、複数のファイルを1つのディレクトリにコピーしたりできます。cpコマンドの使用方法を示す例をすべて紹介します。

cpコマンドでLinuxのファイルをコピーする

最も単純な形でcpの構文を考えてみましょう。

cp [ファイル] [ディレクトリ]

その使用例は次のようになります。

cp Test1.txt copy_Test1_here/

上記のコマンドは、テキストファイルTest1.txtcopy_Test1_here/ディレクトリにコピーします。

1つのディレクトリにコピーする必要があるファイルが複数ある場合は、各ファイルを間にスペースを入れてリストするだけです。

cp Test1.txt Test2.txt Test3.txt Test4.txt copy_all_Tests_here/

ファイルをディレクトリにコピーして、別の名前で保存することもできます。そのための構文を次に示します。

cp [ファイル] [ディレクトリ]/[新しいファイル名]

これにより、最初のタイルの内容がコピーされ、ディレクトリに新しいファイル名として保存されます。同じものの実際の例を次に示します。

Test1.txtというファイルをcopy_Test1_hereディレクトリにTest2.txtとしてコピーする必要があるとします。

cp Test1.txt copy_Test1_here/Test2.txt

同じディレクトリに保持したいですか?次のようにファイルをコピーして名前を変更できます。

cp Test1.txt Test2.txt

ファイルが目的の場所にコピーされたかどうかが不明な場合は、オプション-vを使用して、コピーされたファイルまたはディレクトリの名前を(コンピュータプログラムの出力のように)出力することもできます。

たとえば、Test_Exampleというファイルをdir_1にコピーする必要があるとします。コピー操作の出力を表示するには、-vオプションを使用します。

cp -v Test_Example.txt dir_1

出力は次のようになります。

'Test_Example.txt' -> 'dir_1/Test_Example.txt

Linuxでディレクトリをコピーする

ディレクトリ全体をコピーしたいですか?dir_1dir_2/Desktopにある2つのディレクトリであるとします。cpコマンドを使用してdir_1dir_2にコピーするには、次のように入力する必要があります。

cp -a dir_1 dir_2

ここでオプション-aは「アーカイブ」を表し、ディレクトリを扱っていることをコンピュータに知らせるために使用されます。このコマンドは、ディレクトリdir_1dir_2にコピーします。

ディレクトリをコピーする場合にも、ファイルに適用されるルールの大部分が適用されます。たとえば、入れ子になったディレクトリをネストされたファイルと同じようにコピーしたり、-v引数を渡して、実行されたコピー操作をメインcpに表示したりできます。

-aフラグは実際には、-Rと-dという2つのフラグの組み合わせです。-R引数は、コピー操作が再帰的であること、およびコピーされるオブジェクトとそのオブジェクト自体のコピーもコピーする必要があることを指定します。これは、フォルダーをコピーするために不可欠です。-d引数は、すべてのファイルとフォルダーの属性が保持されることを保証します。

cp -r dir_1 dir_2だけでフォルダーをコピーすることは可能ですが、そうすると特殊な属性が失われる可能性があります。

rsyncでファイルとディレクトリをコピーする

rsyncコマンドは「リモート同期」の略で、主に同じネットワーク上のコンピュータ間でファイルとディレクトリを転送するために使用されます。ただし、同じPC上のファイルとディレクトリをコピーすることもできます。次に例を示します。

dir_1dir_2という2つのディレクトリと、dir_1内のファイルTest.txtがあるとします。ファイルをdir_2にコピーする場合は、rsyncコマンドで次のようにします。

rsync -v dir_1/Test.txt dir_2

ここで-vは「詳細」の略です。cpコマンドの-vオプションと同様に、ファイル転送の詳細が表示されます。これにより、コピーが成功したことを確認できます。この場合の出力は次のようになります。

sent 110 bytes received 35 bytes 290.00 bytes/sectotal size is 24 speedup is 0.17

一度に複数のファイルを1つのディレクトリから別のディレクトリにコピーすることもできます。/Desktopにいて、dir_1dir_2という2つのディレクトリがあるとします。dir_1にはtest1test2test3test4という4つのファイルがあり、それらをdir_2にコピーしたいとします。rsyncを使用してこれを行う方法は次のとおりです。

rsync -v dir_1/Test1.txt dir_1/Test2.txt dir_1/Test3.txt dir_1/Test4.txt dir_2

上記のコマンドは、ファイルtest1test2test3test4をディレクトリdir_2にコピーします。

1つのディレクトリを別のディレクトリにコピーするには、-aオプションを使用する必要があります。Rsyncを使用してディレクトリをコピーする方法の例を次に示します。

rsync -av dir_1 dir_2

Linuxを使い始めたばかりで、コマンドがわかりにくい場合は、時間をかけて最初に基本的なLinuxコマンドに慣れるようにしてください。manコマンドを使用すると、コマンドについて多くのことを学ぶことができます。

rsynccpに加えて、installコマンドでもLinuxでファイルをコピーできます。