目的
異なるリモートホスト間でファイルを転送したい場合、片方のホストに入りもう一方のホストに直接scp
コマンドを叩くことができますが、必ずしもリモートホスト間でsshが接続できるとは限りません。
その場合クライアントから以下のようなscp
コマンドを叩くことを考えますが
scp hoge@example1.com:~/fuga hoge@example2.com:~/fuga
実際に実行してみるとexample2.com
の名前解決に失敗します。
解決策
デフォルトではホスト間でファイル転送することができません。
一旦クライアントにファイルを転送しても良いですが、ファイルサイズが大きい場合はscp -3
コマンドを使うことでリモートホスト間のファイル転送ができます
-3オプション
先ほどのコマンドに-3オプションをつけるだけで二つのホスト間でファイルを転送できます
scp -3 hoge@example1.com:~/fuga hoge@example2.com:~/fuga
scpコマンドのmanを開くと
「Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts. Note that this option disables the progress meter.」
scp -3 hoge@example1.com:~/fuga hoge@example2.com:~/fuga
手元のホストを通してscpコマンドを実行することができるので大きいファイルでも不必要に認証情報を渡して転送する必要がありません