SCP を使ってファイルやディレクトリを安全に転送する方法

  1. SCP コマンド
  2. scp を用いたファイルやディレクトリの転送

SCP (別名 secure copy) は、ファイルやディレクトリをローカルからリモートシステムに転送するためのコマンドラインユーティリティであり、その逆も可能である。また、2つのリモートシステム間でファイルやディレクトリを転送することもできます。ファイルとパスワードは転送中に暗号化されるので、より安全な転送方法となります。

SCP コマンド

構文

scp [OPTION] [[email protected]]SRC_HOST:]file1 [[email protected]]DEST_HOST:]file2

フラグ

  • OPTION:暗号、ssh 設定、ssh ポート、制限、再帰的コピーなどの scp オプションを表します。
  • [[email protected]]SRC_HOST:]file1: コピー元のファイルまたはディレクトリ
  • [[email protected]]DEST_HOST:]file2: ソースファイルまたはディレクトリをコピーするディレクトリへのパスです。

scp は転送を制御するための様々なオプションを提供する。最も広く使われているオプションは以下の通りです。

-P リモートホストの ssh ポートを指定
-p ファイルの変更やアクセス時間を保存する。
-q プログレスメーターとエラーメッセージを抑制
-C 転送中にデータを圧縮
-r ファイルを再帰的にコピーする。

scp コマンドを使う際に注意すべきこと

  1. このコマンドは ssh キーまたはパスワードを用いてリモートシステムを認証する。
  2. リモートシステムを : 記号で認識します。
  3. 送信元のファイルやディレクトリの読み取り権限と、送信先のファイルやディレクトリの書き込み権限を確認する必要がある。
  4. scp は警告なしにファイルを上書きします。したがって、両方のシステムで同じ名前と場所を共有するファイルの転送中は注意が必要です。

scp を用いたファイルやディレクトリの転送

ローカルシステムからリモートシステムにファイルをコピーする

scp main.py [email protected]:/Documents/directory

このコマンドはユーザーパスワードの入力を促し、正しいパスワードを入力すると転送が開始されます。

出力:

[email protected]'s password:
main.py                             100%    0     0.0KB/s   00:00

ローカルシステム上のファイル main.py を、ユーザ名 remote_username、IP アドレス 11.11.0.200 のリモートサーバにコピーします。/Documents/directory はファイルのコピー先となるリモートサーバ上のディレクトリを示す。リモートディレクトリが指定されていない場合、ファイルはリモートマシンのホームディレクトリにコピーされる。

リモート上の SSH がデフォルトのポート 22 以外のポートをリッスンしている場合、-P オプションを使ってポートを指定することができる。

scp -P 8080 main.py [email protected]:/Documents/directory

ローカルシステムからリモートシステムにディレクトリをコピーする

ディレクトリを転送するには scp コマンドで -r 引数を用いなければなりません。

scp -r /Documents/myapp [email protected]:/Documents/remote_app

ローカルマシンの Documents ディレクトリ内の myapp ディレクトリをリモートマシンの Documents ディレクトリ内の remote_app ディレクトリにコピーします。

リモートシステムからローカルシステムへファイルをコピーする

リモートシステムのファイルをローカルシステムにコピーするには、リモートの場所をソース、ローカルの場所をデスティネーションとして用いる。

scp [email protected]:/remote/main.py /Documents/local

リモートシステムからローカルシステムにファイル main.py をコピーします。

あるリモートシステムから別のリモートシステムへファイルをコピーする

scp [email protected]:/host1/main.py [email protected]:/host2

このコマンドは、リモートホストの IP アドレス 11.11.0.200 のファイル /host1/main.py を、IP アドレス 11.11.0.205 のホストのディレクトリ host2 にコピーする。

コマンドが発行されたマシンを経由してトラフィックをルーティングするには、scp コマンドに -3 オプションを追加する。

scp -3 [email protected]:/host1/main.py [email protected]:/host2

関連記事 - Linux Files and Directories

  • mv コマンドを使って Linux でファイルやディレクトリを移動する方法
  • Linux ターミナルを使ってファイルやディレクトリをコピーする方法
  • comments powered by Disqus