サイトアイコン IT NEWS

【Linux】scpコマンドでディレクトリごとコピーする方法

Linuxサーバ間でのディレクトリのコピーには、SCPコマンドを使うことができます。
scpコマンドは、Secure Copy Protocol(セキュアコピープロトコル)を使用して、ファイルやディレクトリを安全にコピーするためのコマンドです。

ここでは、scpコマンドを使ってLinuxサーバ間でディレクトリごとコピーする方法を解説します。

-r オプションでディレクトリを再帰的にコピーする

ディレクトリごと再帰的にコピーする場合は、「-rオプションを指定します。

例えば、Linuxサーバ上の/home/user/dir1ディレクトリを、ローカルPCの/home/user/dir2ディレクトリコピーする場合は、以下のようなコマンドを入力します。

$ scp -r /home/user/dir1/ /home/user/dir2/

このコマンドを実行すると、Linuxサーバ上の/home/user/dir1ディレクトリが、ローカルPCの/home/user/dir2ディレクトリコピーされます。

Linuxサーバー間(別サーバー)にコピーする

Linuxサーバー間でscpコマンドを使うには、コピー元のサーバとコピー先のサーバの両方SSH接続が必要です。
SSH接続ができていることを確認したら、次のようなコマンドを実行します。

$ scp -r [source_directory] [user]@[host]:[destination_directory]

上記のコマンドでは、[source_directory]にはコピー元のディレクトリを、[user]@[host]にはコピー先のサーバのユーザー名とホスト名を、[destination_directory]にはコピー先のディレクトリを指定します。

逆に、リモートホストの/home/user/tmp以下のファイルとディレクトリすべてをローカルの~/tmpコピーする場合は、次のようにします。

$ scp -r user1@192.168.10.1:/home/user/tmp ~/tmp

以上が、Linuxサーバ間でディレクトリコピーする際にSCPコマンドを使う方法です。
scpコマンドを使うことで、Linuxサーバ間でディレクトリを安全にコピーできるため、データの漏洩などを防ぐことができます。

【おまけ】複数のファイルを一括でコピーする

SCPコマンド複数のファイルを一度にコピーする方法は、次のようになります。

ローカルからリモートに複数のファイルをコピーする場合は、ファイル名をスペースで区切って指定します。

$ scp foo.txt bar.txt your_username@remotehost.com:~

ファイル名に共通のパターンがある場合は、ブレース展開やワイルドカードを使って指定できます。

$ scp {foo,bar}.txt your_username@remotehost.com:~
$ scp *.txt your_username@remotehost.com:~

リモートからローカルに複数のファイルをコピーする場合は、リモート側のファイル名をクォートして指定します。

$ scp your_username@remotehost.com:'{foo,bar}.txt' ~
$ scp your_username@remotehost.com:'*.txt' ~

以上です。
この手の情報はメモしておくと、いつか何かの役に立ちますよね。

モバイルバージョンを終了