SCPコマンドでサーバー間のファイルを転送する方法

Terminal

SCPコマンドでサーバー間を転送(アップロード・ダウンロード)する方法の紹介・解説です。転送前に確認しておくべきこと、その手順を含めた内容になってます。

質問する生徒
生徒

SSHでリモートサーバーからローカルにファイルをダウンロードしたいです。

回答する先生
先生

ではSCPコマンドを使用しましょう。

質問する
生徒

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

回答する
先生

SCPはSecure Copyの略で、サーバー間でファイルを転送するコマンドです。
まずはダウンロードまでの手順から説明します。

転送(アップロード・ダウンロード)までの手順

  1. ファイルのあるディレクトリに移動する
  2. ファイルのパスを確認する
  3. サーバーに接続してファイルを転送する

ディレクトリ移動とパス確認のコマンド

ファイルのあるディレクトリに移動

cd ディレクトリのパス
【例】
cd example.com/wordpress/

cdディレクトリの移動(cdは、change directoryの略)

ファイルのパスを確認する

pwd

pwdディレクトリのパスを表示(pwdは、print working directoryの略)
ダウンロードする時にサーバーのファイルのパスが必要になってくるので事前にpwdコマンドで確認

ファイルを転送するSCPコマンド

回答する先生
先生

サーバー間の転送(ダウンロード・アップロード)するコマンドを、ファイルとディレクトリごとでそれぞれのコマンドを紹介します。

ファイルをダウンロードするコマンド

scp 転送元ファイルのパス 転送先ディレクトリパス
【例】
scp root@114.xxx.xxx.xxx:home/example.com/index.html ~/Download/

scpファイル、ディレクトリを転送するコマンド(scpは、secure copyの略)

ディレクトリごとダウンロードするコマンド

scp -r 転送元ディレクトリパス 転送先ディレクトリパス
【例】
scp -r root@114.xxx.xxx.xxx:home/example.com/ ~/Download/

ローカルからリモートサーバーに接続してディレクトリごとダウンロードします。
scpファイル、ディレクトリを転送するコマンド(scpは、secure copyの略)
-rディレクトリとその中身全てを指定するオプション

 転送元のサーバーに公開鍵が設定されている場合のコマンド

scp -i 秘密鍵ファイルのパス ユーザー@ホスト:ファイルのディレクトリパス ダウンロード先のディレクトリパス
【例】
scp -i ~/example.pem root@114.xxx.xxx.xxx:home/example.com/index.html ~/Download/

ローカルからリモートサーバーに接続してファイルをダウンロードします。
scpファイル、ディレクトリを転送するコマンド(scpは、secure copyの略)
-i ssh接続に使用する秘密鍵ファイルを指定するオプション

公開鍵が設定されているリモートサーバーからローカルにディレクトリごとダウンロードするコマンド

scp -i 秘密鍵ファイルのパス 転送元ファイルのパス 転送先ディレクトリパス
【例】
scp -r -i ~/example.pem root@114.xxx.xxx.xxx:home/example.com/ ~/Download/

ローカルからリモートサーバーに接続してファイルをダウンロードします。
scpファイル、ディレクトリを転送するコマンド(scpは、secure copyの略)
-rディレクトリとその中身全てを指定するオプション
-i ssh接続に使用する秘密鍵ファイルを指定するオプション

回答する先生
先生

転送元がリモートサーバーで、転送先がローカルとして、【例】コマンドとしています。ということは?

質問する生徒
生徒

転送元と転送先のパスを交換すれば、転送元がローカル、転送先がリモートサーバーの時にも使えますね!

回答する先生
先生

そういうことになります。