何かと使いやすいscpコマンド。
SCPコマンドは、ssh接続して、コピーするコマンドです。
SCPは、Secure Copy Protocol として覚えておくと忘れ難いです。
環境
多分環境で大きな違いはないと思いますが、念のため記載。
- macOS 15.2
- macターミナル(コマンドラインツール)として、iTerm2を利用
scpコマンドの例
どれがわかりやすいか分かりませんが、どれかがピンとくる例だったら良いなと、たくさん書いてみようかと思います。
前提
- リモートホストに接続ポートを指定(-Pを指定。Pは大文字)
- 公開鍵認証(-iを指定)
ローカルのファイルをscpで、アップロードするコマンドの例
例1.コマンドのイメージ
spc [オプション] A B
オプションを指定して、AをBに、コピー(SCP)する、といった感じです。
~ % scp -P 接続ポート -i 秘密鍵 コピー元ローカルのファイル 接続先ユーザー@ホスト:コピー先のサーバーパス
例2.xserver利用を想定
xserver(参考情報:SSH設定)の利用を想定。
~ % scp -P 10022 -i .ssh/サーバーID.key コピー元ローカルのファイル サーバーID@サーバーID.xsrv.jp:/home/サーバID/任意のパス
もっと具体的に
サーバーID=xsample
秘密鍵=/User/macuser/.ssh/サーバーID.key にあるということ。
~ % scp -P 10022 -i .ssh/xsample.key /Users/macuser/send.txt xsample@xsample.xsrv.jp:/home/xsample/任意のパス
ローカルのディレクトリをscpで、アップロードするコマンドの例
ディレクトリは、-rオプション
すべてのサブディレクトリを含むディレクトリを再帰的にコピーの際は、-rオプションを利用する。
scp -r -P10022 -i .ssh/xsample.key /Users/macuser/senddir xsample@xsample.xsrv.jp:/home/xsample
ローカルのディレクトリsenddirから配下を、リモートの/home/xsampleにコピーする、といった具合です。
xserverのアップロード制限をSCPで回避できる
xserverだとコントロールパネルからサーバーにファイルアップロードができるが、容量制限があるため、大容量はアップロードできない。このため、SCPコマンを利用して大容量のファイルをアップロードできる。
SFTPと比べSCPの方が高速
SFTPと同様にSSHによる暗号化通信が採用されているので、セキュリティ面で信頼性の高いファイル転送プロトコルです。
SFTPに比べて通信速度が高速です。
SCPを利用する場合はUNIX系のシェルが備えられている必要がありますが、ウェブサーバーを構築する際はほとんどにシェルが搭載されているので、環境を意識することは少ないです。