可能性のある重複:
すでに確立されているSSHチャネルを使用
SSHプロキシのチェーンを介してアクセスできるリモートサーバーがあります。結果のチャネルは幅が広く、十分に高速ですが、セットアップには数秒かかります。
このサーバーに対して定期的にrsync
を実行し、小さな変更を比較的大きなファイルツリーに同期させます。
rsync -r source_dir remote_Host:target_dir
、ほとんどの時間は接続の確立に費やされています。比較のために、そのホストへのインタラクティブ接続の確立には、ほぼ同じ時間がかかります。
接続の遅延を回避するために、いくつかのrsync
呼び出しでSSH接続を何らかの方法で再利用する方法はありますか?
問題は、リモートホストへのファイルの連続的レプリケーションを望まないことです。ファイルツリーはレプリケーションの時点で一貫している必要があるため、自分でrsyncイベントをトリガーしたいと思います。
私は他のものを使用することにオープンです。 git
、一定の再接続遅延を回避し、リモートホストのリスニングポートを開く必要がない限り。
はい、ControlMaster
およびControlPath
オプションを参照してください。
マスター接続は次の方法で開始できます。
mkdir ~/.ssh/ctl
ssh -nNf -o ControlMaster=yes -o ControlPath="$HOME/.ssh/ctl/%L-%r@%h:%p" user@Host
そして、rsyncを次のように使用します。
rsync -e "ssh -o 'ControlPath=$HOME/.ssh/ctl/%L-%r@%h:%p'" ...
その後
ssh -O exit -o ControlPath="$HOME/.ssh/ctl/%L-%r@%h:%p" user@Host
マスター接続を終了します。
(ちなみに、ubuntuの一部のバージョンには、ログインするたびに/etc/motd
を再構築するという煩わしい機能があります(非インタラクティブなsshセッションを含む)。たとえば、アップデートが利用可能かどうかの確認が含まれます。IIRC、pam構成からpam_motd
を削除することで無効にすることができます)