群を抜いて、最も簡単な方法はscpを介してコピーすることです。さらに、この構文は、他のいくつかの提案とは異なり実際に機能します。
簡単にこの構文を破ることはできません。潜在的に複雑なパイプを考慮する手間をかけずに、再帰的にコピー、rsync、または必要なものをコピーできます。この構文は直感的にわかりやすく、あなたをフォローしているシステム管理者がより簡単にサポートでき、catを無駄に使用しません。
scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to
scpコマンドのmanページ:-3
2つのリモートホスト間のコピーは、ローカルホストを経由して転送されます。このオプションがないと、データは2つのリモートホスト間で直接コピーされます。このオプションは進行状況メーターを無効にすることに注意してください。
以下の例では
- ワークステーションの名前はMacBook-Proです。
- 開発ジャンプボックスの名前はdevjumpserverです
- Dev Application Serverはdevapplicationserverという名前です
- .localという名前のLAN DNSゾーンにあります
- QAジャンプボックスの名前はqajumpserverです
- QA Application Serverの名前はqaapplicationserverです
- .localという名前のLAN DNZゾーンにあります
- 670GBの/ etc / hostsファイルのテストコピーを実行します;-)
- SSH公開キー認証が設定されていることが前提となります。
これは、適切なジャンプ(要塞サーバー)を介してワークステーションからアプリケーションサーバーへの直接アクセスを設定する〜/ .ssh / configファイルです。
MacBook-Pro:〜barrychapman $ cat〜/ .ssh / config
ホスト *
ServerAliveInterval 60
ホストdevapplicationsever
HostName devapplicationserver.local
ProxyCommand ssh -i〜/ .ssh / id_rsa barrychapman@devjumpserver.example.com -W%h:%p
ユーザーbarrychapman
ホストqaapplicationserver
HostName qaapplicationserver.local
ProxyCommand ssh -i〜/ .ssh / id_rsa barrychapman@qajumpserver.example.com -W%h:%p
ユーザーbarrychapman
MacBook-Pro:〜barrychapman $
ターゲットサーバー上のファイルの存在をテストしますが、存在しません。
MacBook-Pro:〜barrychapman $ ssh qaapplicationserver ls / tmp / hosts
ls:/ tmp / hostsにアクセスできません:そのようなファイルまたはディレクトリはありません
シグナル1で殺されました。
MacBook-Pro:〜barrychapman $
次に、ワークステーションを介して、開発アプリケーションサーバーからQAアプリケーションにファイルをコピーしましょう。
MacBook-Pro:〜barrychapman $ scp -3 devapplicationserver:/ etc / hosts qaapplicationserver:/ tmp /
シグナル1で殺されました。
シグナル1で殺されました。
MacBook-Pro:〜barrychapman $
次に、QA Application Server上のコピーされたファイルの存在を確認しましょう。今回はそこになります。
MacBook-Pro:〜barrychapman $ ssh qaapplicationserver ls / tmp / hosts
/ tmp / hosts
シグナル1で殺されました。
MacBook-Pro:〜barrychapman $
注意
ProxyCommand接続を閉じると、警告メッセージ「Killed by signal 1」が表示されます。これはProxyCommand接続を切断するSSHであり、心配する必要はありません。LogLevel Quiet
要塞ホスト構成スタンザに追加することで、それを取り除くことができます。