scp コマンドは、SSH を利用して リモートサーバとローカル間で安全にファイルをコピー するコマンドです。cp のような感覚で使えるため、サーバへのファイルアップロードやバックアップ取得に便利です。
本コマンドについては、下位互換のために残っていますが新規で使う用途には適していません。詳しくは以下の記事を参考にしてください
構文(Syntax)
scp [オプション] [USER@]HOST:SOURCE [DEST]
scp [オプション] [SOURCE] [USER@]HOST:DEST
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-P PORT | 接続ポートを指定(デフォルト:22) | scp -P 2222 file.txt user@host:/tmp/ |
-i KEY | 秘密鍵ファイルを指定 | scp -i ~/.ssh/id_rsa file.txt user@host:/tmp/ |
-r | ディレクトリを再帰的にコピー | scp -r project user@host:/var/www/ |
-p | タイムスタンプ・パーミッションを保持 | scp -p file.txt user@host:/tmp/ |
-v | 詳細なデバッグ出力 | scp -v file.txt user@host:/tmp/ |
-C | 圧縮転送を有効化 | scp -C largefile.iso user@host:/tmp/ |
-q | 進行状況などを非表示にする | scp -q file.txt user@host:/tmp/ |
実行例
ローカルからリモートへファイルコピー
scp file.txt user@example.com:/home/user/
(ローカルの file.txt をリモートの /home/user/ にコピー)
リモートからローカルへコピー
scp user@example.com:/var/log/syslog ./syslog
ディレクトリを再帰的にコピー
scp -r website/ user@example.com:/var/www/html/
ポート指定してコピー
scp -P 2222 file.txt user@example.com:/tmp/
秘密鍵を指定してコピー
scp -i ~/.ssh/id_rsa backup.sql user@example.com:/home/user/
圧縮して高速転送
scp -C bigfile.iso user@example.com:/tmp/
エラー例(ホストが間違っている)
scp file.txt user@wronghost:/tmp/
出力例:
ssh: connect to host wronghost port 22: Connection refused
lost connection
関連コマンド
ssh: リモート接続sftp: SSH を利用した FTP ライクなファイル転送rsync: 差分転送や再開機能に優れたファイル同期ツールcp: ローカルファイルコピー
備考
scpは OpenSSH に含まれていますが、最近はより柔軟なrsyncやsftpの利用が推奨される場合もあります。-rを使うときは誤操作でディレクトリ全体を上書きしないように注意が必要です。- 転送速度やネットワーク負荷を考慮するなら
rsync -avzの方が効率的な場合があります。
参考
- manページ: man7.org scp(1)
- OpenSSH: https://www.openssh.com/

コメント