一連のファイルを反復処理し、それらのいくつかを呼び出すプログラムを作成しました。
scp <file> user@host:<remotefile>
ただし、私の場合、転送する必要がある小さなファイルが何千もある可能性があり、scp はそれらのそれぞれに対して新しい ssh 接続を開いているため、かなりのオーバーヘッドがあります。
接続を維持する1つのプロセスを実行し続け、単一のファイルをコピーするために「リクエスト」を送信できるソリューションがないかどうか疑問に思っていました。
理想的には、最初に単一のプロセス (1) を開始できるように、送信プログラムと受信プログラムの組み合わせを探しています。
ssh user@host receiverprogram
そして、ファイルごとにコマンド (2) を呼び出します。
senderprogram <file> <remotefile>
(2) の出力を (1) の入力にパイプすると、ファイルが転送されます。最後に、プロセス (1) に何らかの終了シグナルを送信するだけです。
送信側プログラムと受信側プログラムは、Unix 用のオープン ソース C プログラムであることが望ましいです。それらは、パイプの代わりにソケット、またはその他の創造的なソリューションを使用して通信する場合があります。
ただし、各ファイルは反復処理の時点で転送されるという重要な制約scp
があります。ファイルのリストを収集してから、 の 1 つのインスタンスを呼び出して、最後にすべてのファイルを一度に転送することは受け入れられません。また、受信ホストへの単純なシェル アクセスしかありません。
更新: ssh の多重化機能を使用して接続オーバーヘッドの問題の解決策を見つけました。以下の私自身の回答を参照してください。それでも、ここで説明する送信者/受信者プログラムが存在するかどうかを知りたいので、報奨金を開始しています。xmodem/ymodem/zmodem など、使用できるものがあるはずです。