scp(Secure Copy)
📦はじめに
scp は、Secure Copy の略で、UNIX系OSにおいてファイルやディレクトリをネットワーク越しに安全にコピーするためのコマンドです。SSH(Secure Shell)を使って通信を行うため、暗号化されており、セキュアで信頼性の高いファイル転送を実現できます。
🔐scpの背景と特徴
かつてネットワーク越しのファイル転送には ftp や rsh などが使われていましたが、これらは通信が平文であり、セキュリティに大きな問題がありました。そこでSSHプロトコルの登場により、安全な通信手段が提供され、それをベースに作られたのが scp です。
scp はSSHの一部として実装されており、SSHが使える環境ならほぼ確実に使えます。ポートはデフォルトで 22番 を使用します。
🛠️基本的な使い方
📁ファイルをリモートに送る(ローカル → リモート)
scp localfile.txt user@remotehost:/path/to/destination/
説明
-
localfile.txt: 転送するファイル -
user: リモート側のユーザー名 -
remotehost: IPアドレスまたはホスト名 -
/path/to/destination/: リモート側の保存先パス
📥ファイルを取得する(リモート → ローカル)
scp user@remotehost:/path/to/file.txt ./localdir/
📦ディレクトリを丸ごとコピー(-r オプション)
scp -r myfolder user@remotehost:/home/user/
-r をつけることで、フォルダ内のすべてのファイル・サブディレクトリが再帰的にコピーされます。
⚙️主なオプション
| オプション | 意味 |
|---|---|
-r |
ディレクトリを再帰的にコピー |
-P |
SSHのポート番号を指定(例:-P 2222) |
-i |
秘密鍵を指定(例:-i ~/.ssh/id_rsa) |
-v |
詳細なログを表示(デバッグ用) |
-C |
圧縮して転送(低速回線向け) |
📋使用例まとめ
| 用途 | コマンド例 |
|---|---|
| ファイルをアップロード | scp book.pdf user@192.168.1.10:/home/user/docs/ |
| ファイルをダウンロード | scp user@192.168.1.10:/var/log/syslog ./ |
| 別ポートのSSHサーバ | scp -P 2222 file.txt user@host:/tmp/ |
| 鍵認証を使う場合 | scp -i ~/.ssh/my_key.pem file.txt user@host:/tmp/ |
⚠️注意点
scp は使いやすいですが、近年では開発停止がアナウンスされており、OpenSSHの開発者は sftp や rsync -e ssh の使用を推奨しています。scp は一部の特殊なファイル名(スペースや特殊文字を含むもの)で扱いが難しい場合があります。
🧭代替手段
| コマンド | 特徴 |
|---|---|
rsync -e ssh |
差分転送が可能。大きなディレクトリに最適 |
sftp |
対話型で操作が可能。GUIクライアントも多数あり |
sshfs |
リモートフォルダをローカルにマウントできる |