【Linuxコマンド】scpコマンドでサーバ間転送!いちいちローカルにダウンロードするのは億劫だ!

VPSを複数借りて環境を構築したりする状況で大活躍のSCPコマンドについてのメモです。

Aサーバで使用しているファイルを新規で構築するBサーバに持っていきたいなって時等に重宝します。

一々FTPでローカルにファイルをダウンロードして再度アップロードするのは色々と面倒な場面に是非。

目次

基本的な使い方

基本的なコマンドは以下の通り。

scp [オプション] コピー元 コピー先

実際に使用する場面であれば以下のようになるかと思います。

scp -r ./localfile hoge@hogehoge.net:/etc/hoge 

簡単に各場所の説明をしますと、

scp オプション 転送したいローカルファイル 転送先のユーザ名@転送先のホスト名:転送先の保存先 

このような感じになります。(※オプションについては下記に記載)

コピーもとがローカルと決まっている訳ではないのでコピー元を接続先の情報にすれば接続先からローカルへのファイルコピーも可能となります。

接続方法のよくあるシチュエーションとしてポート番号が変わっていたり鍵認証での接続だったりしますのでその場合はオプションで指定します。

主要なオプション

主に使うオプションは下記の通り。

  • -1
    SSHプロトコルV1使用
  • -2
    SSHプロトコルV2使用
  • -4
    IPv4アドレスのみ使用
  • -6
    IPv6アドレスのみ使用
  • -B
    バッチモード(パスワードを尋ねない)
  • -C
    データを圧縮する
  • -P
    接続ポートの番号を指定する
  • -c
    暗号方式を指定する
  • -i
    鍵ファイルの指定
  • -p
    オリジナルの最終修正時刻やパーミッションを保持
  • r
    ディレクトリを再帰的にコピーする
  • -v
    助長表示モード

特によく使うかと思うものは青の太文字にしています。

よく使うかと思われるシチュエーション

  • 普通に接続、フォルダを再帰的(サブフォルダも)にコピー
    scp -r  ./localfile hoge@hogehoge.net:/etc/hoge
  • 上記と同じ状況でコピー元の更新日時やパーミッションを保持する
    scp -r -p ./localfile  hoge@hogehoge.net:/etc/hoge
  • ポートを指定して接続(大文字のPになるので注意)
    scp -P 10022 ./localfile hoge@hogehoge.net:/etc/hoge
  • ポートを指定した上に鍵認証の接続
    scp -P 10022 -i /hoge/keyfile ./localfile hoge@hogehoge.net:/etc/hoge

 

とりとめのないまとめ

鍵ファイル接続だったりするとファイルの用意も必要になってしまうので面倒な場合もありますが、ファイルが多かったり大きかったりする場合はローカル経由するよりも効率が良いので選択肢の一つにしてみてください。

場合によってはローカル経由の方が早かったりしますしね・・・w

 

 

関連記事

コメントを残す