SSHでアップロードしたい
ローカルからサーバーへのファイルアップロードといえば、FTPもしくはレンタルサーバーの管理画面のファイルマネージャーしか使ったことがなかったのだが、ターミナルでscpというコマンドを使ってアップロードができるようなので、試してみたい。
試した事は、Macのファイルをレンタルサーバー(Xserver)へアップロード。
XserverでSSHを使えるようにする
scpコマンドでアップロードする前に、SSH接続の事があまり分からなかったので、SSH接続の流れを知るために簡単にメモる。
まずはXserverの管理画面からSSHをオンにする。公開鍵認証用鍵ペアの生成をしダウンロード。ターミナルを使い鍵ファイルを~/.ssh移動させ、任意の名前を付け保存。
ターミナルでsshコマンドで接続。ターミナル越しにXserverの中が見られるようになった。
scpコマンドでアップロード
よく使いそうなオプション
-i | 鍵ファイルの場所 |
-P | SSH接続先のポート番号 |
-p | 元ファイルの更新時間やパーミッションを保持させる |
-r | フォルダをアップロードする |
-C | データ圧縮する |
今回実行したコマンド
cdコマンドで、アップロードしたいファイルがあるディレクトに移動して以下を実行する。
scp -P ポート番号 -i 秘密鍵のパス ファイル名 サーバーID@ホスト名(またはIPアドレス):アップロード先のパス
ポート番号 | 10022(Xserverの場合) |
秘密鍵のパス | xserver_secret.key |
アップしたファイル | file.html |
XserverのサーバーID | serverid |
ホスト名 | sv00000.xserver.jp |
アップロード先のパス | ホスト名の後にコロンを付て続ける |
scp -P 10022 -i ~/.ssh/xserver_secret.key file.html serverid@sv00000.xserver.jp:/home/serverid/sample.com/public_html/
複数のファイルをアップロードする場合
複数のファイルの指定には、単純に半角スペース空けて続ける。
scp -P ポート番号 -i 秘密鍵のパス ファイル名1 ファイル名2 サーバーID@ホスト名(またはIPアドレス):アップロード先のパス
ダウンロードする場合
アップロード先の部分と、ローカルの部分の順番を入れ替えることダウンロードできる。
ローカルのダウンロードファイルを保存したいディレクトリに移動して以下を実行する。
scp -P ポート番号 -i 秘密鍵のパス サーバーID@ホスト名(またはIPアドレス):ダウンロードしたいファイルのパス ダウンロードファイルを保存したいパス
scp -P 10022 -i ~/.ssh/xserver_secret.key serverid@sv00000.xserver.jp:/home/serverid/sample.com/public_html/file.html .
データ圧縮してアップロード
scp -P ポート番号 -i 秘密鍵のパス -C ファイル名 サーバーID@ホスト名(またはIPアドレス):アップロード先のパス
よく分からなかったけど、サイズの大きいファイルはデータ圧縮を使うと速くなるようだ。
コマンドに慣れてないせいか、初めてアップした時は全然理解できなかったけど、オプションを変えてみたり、アップロード先を変えてみたり何度か試したら、理解できた気がする。
注意点
アップロード先に同名のファイルやディレクトリがあると上書きされる。