ローカルマシンからリモートサーバーにファイル転送をする場合、WinSCPなどが使えればそれはそれでいいのですが、GUIだとディレクトリを誤って移動させてしまうリスクがあったり、権限によって特定の捜査しかできなかったりします。
こういう理由のため、エンジニアはファイル転送には通常はpscpかscpコマンドを使います。WindowsでもMacでも使えてとっても簡単です。いくつかパターンがあるので整理します。
Windowsの場合はpscp
- ローカルのファイルをリモートに転送する
- リモートのファイルをローカルにダウンロードする
- ローカルのファイルをリモートに転送する(秘密鍵あり)
- リモートのファイルをローカルにダウンロードする(秘密鍵あり)
Macの場合はscp
- ローカルのファイルをリモートに転送する
- リモートのファイルをローカルにダウンロードする
- ローカルのファイルをリモートに転送する(秘密鍵あり)
- リモートのファイルをローカルにダウンロードする(秘密鍵あり)
注意事項
重いファイルのダウンロードはサーバーに負荷がかかります。また動作が鈍いサーバーの場合、ダウンロードには時間がかかります。
Windows pscp
Windowsの場合はコマンドプロンプトで入力します。
ローカルのファイルをリモートに転送する
この場合、ローカルのデスクトップにあるfilenameをリモートのadminユーザーで/home/admin直下にファイルを転送するという意味です。このコマンドの構造を一般化して書くと以下の通りです。
pscp ローカルファイル ユーザー名@IPアドレス:サーバーのディレクトリ
リモートのファイルをローカルにダウンロードする
この場合、/home/admin配下にあるfilenameをローカルのデスクトップにダウンロードします。
ローカルのファイルをリモートに転送する(秘密鍵あり)
秘密鍵が必要な場合は、ローカルの所定の場所に秘密鍵を設置して、 -i をオプションにして指定し、あとはファイルの転送です。簡単ですね。
リモートのファイルをローカルにダウンロードする(秘密鍵あり)
Mac scp
Macの場合はターミナルからコマンドを実行しましょう。
ローカルのファイルをリモートに転送する
リモートのファイルをローカルにダウンロードする
ローカルのファイルをリモートに転送する(秘密鍵あり)
リモートのファイルをローカルにダウンロードする(秘密鍵あり)
おまけ
ちなみにポートを指定するときは、以下のように -Pオプションをつけます。この例はローカルに構築したvagrantに接続する場合です。
パターンが分かれば簡単ですね。達人になるとAtokやgoogoleに辞書登録して、よく使うサーバーに接続したりします。
どうしてもGUIで転送したい人は、FTPなどをリモートサーバーにインストールすればいいです。セキュリティは落ちるのでおすすめしませんが。