SSHセッションを再利用して繰り返されるrsyncコマンドの実行

SSHセッションを再利用して繰り返されるrsyncコマンドの実行

重複の可能性:
設定された SSH チャネルの使用

SSHプロキシチェーンを介してアクセスできるリモートサーバーがあります。結果のチャンネルは十分に広く高速ですが、設定に数秒かかります。

rsync私はこのサーバーを定期的に実行して、比較的大きなファイルツリーへの小さな変更を同期させたいと思います。

単にこれを行うと、接続をrsync -r source_dir remote_host:target_dir作成するのにほとんど時間がかかります。これと比較して、このホストへの対話型接続を確立するにはほぼ同じ時間がかかります。

rsync接続遅延を避けるために、複数の呼び出しでSSH接続を再利用する方法はありますか?

問題は私が望んでいないということです。続けてファイルをリモートホストにコピーします。コピー中にファイルツリーを一貫して保持する必要があるため、rsyncイベントを直接トリガーしたいと思います。

gitたとえば、継続的な再接続遅延を回避し、リモートホストでリッスンポートを開く必要がない限り、他のものを使用することができます。

答え1

はい、オプションを参照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_motdpam構成から削除して無効にすることができます)

関連情報