Edited at

SCPコマンドでローカルのファイルをサーバにアップ&サーバ上のファイルをDL

More than 1 year has passed since last update.


はじめに

これまで、サーバで何か開発してる時に、たとえばjqueryをダウンロードして、それをまたサーバにアップロードして。。。

という作業がとても億劫でした。

自分はmac使ってるのでcyberdugというアプリで出来てはいましたが、基本CUIで作業しててファイルアップロードの時だけまた別アプリ起動するのが面倒でした。

で、今まで特に使ってなかったSCPコマンドの便利さに出会ってしまったので忘れないように書いておきます。


SCPとは

そもそもSCPというのは、sshを使ってネットワーク間でファイルを転送する仕組みの事です。

特徴は、scp(Secure CoPy)は、SSHを使っているので通信が暗号化されるため安全にファイルの転送が出来る点です。


基本的な使い方

scp [オプション][転送したいファイル名][転送先のパス]


ローカルのファイルをサーバに転送 - (リモートホストへの転送)

Desktopにあるhoge.txtを自分のサーバ上のホームディレクトリに転送する例

scp ~/Desktop/hoge.txt riki@[サーバのIPアドレス]:/home/riki/


  • ディレクトリを転送する場合

ディレクトリを転送するには、-rオブションを使えばOKです。

scp -r ~/Desktop/hoge riki@[サーバのIPアドレス]:/home/riki/


サーバ上のファイルをローカルに転送 - (リモートホスト上のファイルのDL)

サーバ上のファイルをダウンロードしてくる時は上記とは逆に指定すれば良いだけです。

scp riki@[サーバのIPアドレス]:/home/riki/hoge.txt ~/Desktop/

こんな感じ。


リモートからリモートに転送

例えば、サーバを2つ持っていて、そのサーバ間の転送という事もscpなら可能です。

scp riki@[転送元サーバのIPアドレス]:/home/riki/hoge.txt riki@[転送先サーバのIPアドレス]:/home/riki/


便利なオプション紹介

オプション
機能

-p(小文字)
ファイルの更新時間やアクセス時間・パーミッションも維持して転送

-P(大文字)
ポート番号を指定する(sshでポート番号を22番から変更している場合なんかは使います

-c(小文字) [暗号化方式]
暗号化の方式を指定して転送を高速化します

-C(大文字)
転送を圧縮して高速化

-l [リミット(kBit/s]
scpに帯域制限をかける(メリットよく分かってない)