Linuxサーバ間でのディレクトリのコピーには、SCPコマンドを使うことができます。scp
コマンドは、Secure Copy Protocol(セキュアコピープロトコル)を使用して、ファイルやディレクトリを安全にコピーするためのコマンドです。
ここでは、scp
コマンドを使ってLinuxサーバ間でディレクトリごとコピーする方法を解説します。
-r オプションでディレクトリを再帰的にコピーする
ディレクトリごと再帰的にコピーする場合は、「-r
」オプションを指定します。
例えば、Linuxサーバ上の/home/user/dir1
ディレクトリを、ローカルPCの/home/user/dir2
ディレクトリにコピーする場合は、以下のようなコマンドを入力します。
1 |
$ scp -r /home/user/dir1/ /home/user/dir2/ |
このコマンドを実行すると、Linuxサーバ上の/home/user/dir1
ディレクトリが、ローカルPCの/home/user/dir2
ディレクトリにコピーされます。
Linuxサーバー間(別サーバー)にコピーする
Linuxサーバー間でscp
コマンドを使うには、コピー元のサーバとコピー先のサーバの両方にSSH接続が必要です。
SSH接続ができていることを確認したら、次のようなコマンドを実行します。
1 |
$ scp -r [source_directory] [user]@[host]:[destination_directory] |
上記のコマンドでは、[source_directory]
にはコピー元のディレクトリを、[user]@[host]
にはコピー先のサーバのユーザー名とホスト名を、[destination_directory]
にはコピー先のディレクトリを指定します。
逆に、リモートホストの/home/user/tmp
以下のファイルとディレクトリすべてをローカルの~/tmp
にコピーする場合は、次のようにします。
1 |
$ scp -r user1@192.168.10.1:/home/user/tmp ~/tmp |
以上が、Linuxサーバ間でディレクトリをコピーする際にSCPコマンドを使う方法です。scp
コマンドを使うことで、Linuxサーバ間でディレクトリを安全にコピーできるため、データの漏洩などを防ぐことができます。
【おまけ】複数のファイルを一括でコピーする
SCPコマンドで複数のファイルを一度にコピーする方法は、次のようになります。
ローカルからリモートに複数のファイルをコピーする場合は、ファイル名をスペースで区切って指定します。
1 |
$ scp foo.txt bar.txt your_username@remotehost.com:~ |
ファイル名に共通のパターンがある場合は、ブレース展開やワイルドカードを使って指定できます。
1 2 |
$ scp {foo,bar}.txt your_username@remotehost.com:~ $ scp *.txt your_username@remotehost.com:~ |
リモートからローカルに複数のファイルをコピーする場合は、リモート側のファイル名をクォートして指定します。
1 2 |
$ scp your_username@remotehost.com:'{foo,bar}.txt' ~ $ scp your_username@remotehost.com:'*.txt' ~ |
以上です。
この手の情報はメモしておくと、いつか何かの役に立ちますよね。
コメント