ssh ファイル転送(SCP):コマンドとオプションまとめ

スポンサーリンク

ssh ファイル転送(SCP):コマンドとオプションまとめ

SCP とは

scp(Secure Copy)はSSHを使ってローカルとリモートサーバー間でファイルを転送するコマンドです。通信が暗号化されており、SSH鍵認証もそのまま使えます。


基本的な書き方

scp [オプション] 転送元 転送先

リモートのパスは user@host:パス の形式で指定します。


ローカル → リモート(アップロード)

ファイルを転送する

scp ./file.txt user@example.com:/home/user/
# ファイル名を変えて転送
scp ./file.txt user@example.com:/home/user/renamed.txt

ディレクトリごと転送する(-r)

scp -r ./dist/ user@example.com:/var/www/html/

-r で再帰的にディレクトリをコピーします。


リモート → ローカル(ダウンロード)

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

scp user@example.com:/var/log/app.log ./

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

scp -r user@example.com:/var/www/html/ ./backup/

よく使うオプション

ポートを指定する(-P)

SSHポートが22以外の場合は -P で指定します(ssh コマンドの -p と違い大文字です)。

scp -P 2222 ./file.txt user@example.com:/home/user/

秘密鍵を指定する(-i)

scp -i ~/.ssh/id_ed25519_work ./file.txt user@example.com:/home/user/

転送速度を制限する(-l)

帯域を制限したい場合は -l でKbps単位で指定します。

# 1Mbps に制限
scp -l 1000 ./largefile.tar.gz user@example.com:/home/user/

圧縮して転送する(-C)

テキストファイルなど圧縮効果が高いファイルに有効です。

scp -C ./logs/ user@example.com:/backup/

~/.ssh/config のエイリアスを使う

~/.ssh/config に設定済みのホストエイリアスがそのまま使えます。

# config に `myserver` が設定されている場合
scp ./file.txt myserver:/home/user/
scp -r myserver:/var/log/ ./logs/

毎回ユーザー名・ホスト名・ポート・鍵を指定しなくて済みます。


リモート → リモート

サーバー間でファイルを直接転送することもできます。

scp user@server1.example.com:/data/file.txt user@server2.example.com:/data/

よく使うオプション早見表

オプション 説明
-r ディレクトリを再帰的にコピー
-P port ポートを指定(大文字のP)
-i key 秘密鍵を指定
-l kbps 転送速度を制限(Kbps)
-C 圧縮して転送
-v 詳細ログを表示(デバッグ用)

まとめ

# ローカル → リモート
scp ./file.txt user@example.com:/home/user/

# ディレクトリごとアップロード
scp -r ./dist/ user@example.com:/var/www/html/

# リモート → ローカル
scp user@example.com:/var/log/app.log ./

# ポート指定
scp -P 2222 ./file.txt user@example.com:/home/user/

# config のエイリアスを使う
scp ./file.txt myserver:/home/user/

SSH接続の設定(config・鍵認証・ssh-agent)は「SSH 入門:接続・鍵認証・config ファイルの設定」を参照してください。