メインコンテンツへスキップ

scp(Secure Copy)

📦はじめに

scp は、Secure Copy の略で、UNIX系OSにおいてファイルやディレクトリをネットワーク越しに安全にコピーするためのコマンドです。SSH(Secure Shell)を使って通信を行うため、暗号化されており、セキュアで信頼性の高いファイル転送を実現できます。

🔐scpの背景と特徴

かつてネットワーク越しのファイル転送には ftprsh などが使われていましたが、これらは通信が平文であり、セキュリティに大きな問題がありました。そこで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の開発者は sftprsync -e ssh の使用を推奨しています。
scp は一部の特殊なファイル名(スペースや特殊文字を含むもの)で扱いが難しい場合があります。

🧭代替手段

コマンド 特徴
rsync -e ssh 差分転送が可能。大きなディレクトリに最適
sftp 対話型で操作が可能。GUIクライアントも多数あり
sshfs リモートフォルダをローカルにマウントできる