0

rsyncでは、 overを使用していくつかのファイルをリモート ホストに転送するためのシェル スクリプトを用意しましたssh

ただし、転送に加えて、事前と後でいくつかのハウスキーピングを行う必要があります。これには、追加のsshwith コマンドと、転送scpに含まれていない追加のデータを転送するための呼び出しが含まれますrsync(転送中にこのデータを生成します)場所)。

ご想像のとおりssh、特にハウスキーピング操作が実際には非常に高速であるため (通常は)、これにより現在多くのセッションが開始および停止されています。ホスト上で、これが多数の SSH 接続および切断として表示されることを確認しました。これは、実際の転送に比べればわずかですが、かなり無駄に思えます。

だから私が不思議に思っているのは; 接続を開いて、ssh接続が完了するまで接続したままにする方法はありますか? つまり、最初のsshハウスキーピング操作では、接続を開いたままにして、実行時rsync(およびその後scp) に、以前に開いた接続を使用して処理を実行できるようにします。

そのようなことはシェルスクリプトでも可能ですか? もしそうなら、エラーを処理する方法についてのポインタ(つまり、接続が必要なくなったら接続を確実に閉じること)もいただければ幸いです!

4

1 に答える 1

0

それが可能だ。最も簡単な方法は、プログラミングさえ必要としません。https://unix.stackexchange.com/questions/48632/cant-share-an-ssh-connection-with-rsyncを参照してください。一般的な考え方は、SSH 接続の再利用を使用して複数の SSH で 1 つのセッションを共有し、次に取得することです。 rsync も参加します。

難しいのは、libssh2自分ですべてを使用してプログラムすることです。これはより多くの作業になります。あなたの場合、それを推奨するものは何もないようです。より複雑なシナリオでは、これが役立ちます。

于 2013-07-04T11:02:03.890 に答える