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 |
リモートフォルダをローカルにマウントできる |