図1 testuserというユーザー名でリモート・ホスト(10.161.165.196)の/home/testuser/にgetfileというファイル名でコピーした画面
図1 testuserというユーザー名でリモート・ホスト(10.161.165.196)の/home/testuser/にgetfileというファイル名でコピーした画面
[画像のクリックで拡大表示]
図2 testdirディレクトリの配下にあるファイルやディレクトリを再帰的にリモート・ホストにコピーした画面
図2 testdirディレクトリの配下にあるファイルやディレクトリを再帰的にリモート・ホストにコピーした画面
[画像のクリックで拡大表示]
図3 ssh_configオプションを変更してリモート・ホストにコピーした画面
図3 ssh_configオプションを変更してリモート・ホストにコピーした画面
[画像のクリックで拡大表示]

scp コピー元ファイル [[ユーザー名@]コピー先ホスト:]コピー先ファイル

 ネットワーク上にあるサーバーとの間でファイルをコピーするにはrcpコマンドを使うのが一般的です。ですが,rcpコマンドでの通信は暗号化されていないので,途中で盗聴されてしまう可能性があります。盗聴の危険性がある環境で安全にコピーする場合にはscpコマンドを使うのがいいでしょう。scpコマンドでは,sshを使った暗号化通信でファイルをコピーします。

 例えば,scpコマンドでローカル・ホストのsendfileという名前のファイルを,リモート・ホスト(10.161.165.196)の/home/testuser/にgetfileというファイル名でコピーする場合は以下のようなコマンドを実行します(図1)。なお,図1の画面ではtestuserというユーザー名でリモート・ホストに接続しています。

scp ./sendfile testuser@10.161.165.196:./getfile

 ちなみに,ローカル・ホストのtestdirディレクトリの配下にあるファイルやディレクトリを再帰的にリモート・ホストにコピーする場合は,以下のように-rオプションを付けてscpコマンドを実行します(図2)。

scp -r ./testdir/ testuser@10.161.165.196:~/testdir/

 なお,scpコマンドはデフォルトではssh_configファイルに設定されている値を使ってコピーします。この値を変えてコピーしたい場合は-oオプションを付けて指定します。例えば,デフォルトとは逆にまずsshバージョン1を試してからsshバージョン2を試すという順序にしたい場合は,以下のようにProtocol項目を指定して変更します(図3)

scp -o Protocol=1,2 ./bigfile testuser@10.161.165.196:./bigfile

 この図3では,さらに同じオプションとして-Cオプションを加え,大きいファイルを圧縮してリモート・ホストにコピーしている。コピー時間を見ると,ファイルを圧縮することで転送時間が短くなっていることが確認できる。