scpの使い方
scpコマンドは、ファイルをsshで転送するために利用します。
読み方
- scp
- えすしーぴー
目次
概要
scpコマンドは、ファイルをsshで転送するために利用します。 ローカルのファイルをリモートにコピーしたり、リモートのファイルをローカルにコピーします。
コマンドラインオプション
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2
scpコマンドの使い方
ホスト foo のホームディレクトリに、ローカルの /etc/rc.conf を転送します。
% scp /etc/rc.conf foo:
/path/to を再帰的に ホスト foo にコピーします。
% scp -r /path/to foo:
/path/to を再帰的に ホスト foo の /home/tmp/ にコピーします。 /home/tmp/に to のディレクトリが作成されます。
% scp -r /path/to foo:/home/tmp/
ホスト foo の /etc/rc.conf をローカルのホームディレクトリにコピーします。
% scp foo:/etc/rc.conf ~/
ユーザー名を指定する
ホスト foo に ユーザー user1 でログインしてコピーします。 ユーザー名とホスト名は、 @ で区切ります。
% scp -r /path/to user1@foo:
転送スピードを規制する
-l オプションで帯域幅を制限できるので、転送スピードを制限できます。単位は、Kbit/sになります。 800を指定した場合、800Kbit/sなので、100KB/sになります。
scp -r -l 800 /path/to user@foo:
リモートからリモートへダイレクトにコピーする
ホスト hoge で ホスト foo から ホスト bar へコピーする。
hoge% scp foo:/tmp/a bar:/tmp/b
ファイルは、ホスト hoge を経由しません。 foo から bar へダイレクトに転送されます。
リモートからリモートへのコピー時にバイパスする
リモートからリモートへのコピーは、デフォルトでは、ダイレクトに行われます。
hoge% scp foo:/tmp/a bar:/tmp/b
hoge foo -> bar
foo から bar へのファイル転送時に、scp コマンドの実行ホストを経由(バイパス)して転送できます。
hoge% scp -3 foo:/tmp/a bar:/tmp/b
foo -> hoge -> bar
これは、リモートからリモートに直接的にコピーできないネットワーク構成 / ACL の場合に有効です。
NetCat モード
OpenSSH 5.4 以上の scp には、 netcat モード (ncat ) があります。
ファイルの転送先のリモートホストがゲートウェイサーバー(gw) を経由しないとリーチできない場合、scp は、直接ファイルが転送できないため、ゲートウェイサーバーを経由しなければなりません。 これは、ネットワークのACLの制限などによるものです。
foo -> gw -> bar
昔からあるテクニックとして、ncat (nc) などのコマンドと ssh_config の ProxyCommand のオプションを使用して、ファイルを転送してきました。 近年のOpenSSH の scp には、netcat モードが追加されています。そのため、ncat / netcat (nc) を使わずに、行うことができます。
~/.ssh/ssh_config に以下の設定を行います。
Host bar ProxyCommand ssh user@gw -W %h:%p
ゲートウェイサーバーの sshd の sshd_config でポートフォワーディング を 許可する必要があります。
AllowTcpForwarding yes
scp コマンドは、以下の通りです。
foo% scp /tmp/a bar:/tmp/a
関連項目
- scp関連
- scpの使い方
- scpとsftpの違い
- sftpでchrootする設定
- sftpのみを許可する方法
- SSH File Transfer Protocol
- sftpの使い方
- ftp
- wget
ツイート