SSHでアップロードしたい

ローカルからサーバーへのファイルアップロードといえば、FTPもしくはレンタルサーバーの管理画面のファイルマネージャーしか使ったことがなかったのだが、ターミナルでscpというコマンドを使ってアップロードができるようなので、試してみたい。

試した事は、Macのファイルをレンタルサーバー(Xserver)へアップロード。

XserverでSSHを使えるようにする

scpコマンドでアップロードする前に、SSH接続の事があまり分からなかったので、SSH接続の流れを知るために簡単にメモる。

まずはXserverの管理画面からSSHをオンにする。公開鍵認証用鍵ペアの生成をしダウンロード。ターミナルを使い鍵ファイルを~/.ssh移動させ、任意の名前を付け保存。
ターミナルでsshコマンドで接続。ターミナル越しにXserverの中が見られるようになった。

SSH接続についてはこちらの記事へ。

scpコマンドでアップロード

よく使いそうなオプション

-i鍵ファイルの場所
-PSSH接続先のポート番号
-p元ファイルの更新時間やパーミッションを保持させる
-rフォルダをアップロードする
-Cデータ圧縮する

今回実行したコマンド

cdコマンドで、アップロードしたいファイルがあるディレクトに移動して以下を実行する。

scp -P ポート番号 -i 秘密鍵のパス ファイル名 サーバーID@ホスト名(またはIPアドレス):アップロード先のパス
ポート番号10022(Xserverの場合)
秘密鍵のパスxserver_secret.key
アップしたファイルfile.html
XserverのサーバーIDserverid
ホスト名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アドレス):アップロード先のパス

よく分からなかったけど、サイズの大きいファイルはデータ圧縮を使うと速くなるようだ。

コマンドに慣れてないせいか、初めてアップした時は全然理解できなかったけど、オプションを変えてみたり、アップロード先を変えてみたり何度か試したら、理解できた気がする。

注意点

アップロード先に同名のファイルやディレクトリがあると上書きされる。

ページの先頭へ