次のコマンドを実行して、私のC ++プログラムでrsyncを使用しています。system("rsync -rauzvq root@host:/folder");
複数のシステムを同期するために使用します。
今私が持っている問題は、リモートホストがダウンしていてまだ私のプログラムと同期しているときに、私のプログラムがTCPタイムアウト中に中断されることです。だから私はrsyncソケットのTCPタイムアウトパラメータを調整する必要があると思いましたが、(--sockoptsが機能しないか)わかりません。
この問題を解決するもう1つの方法は、分岐したシステムコールを作成して、特定のタイムアウト後にrsync pIDがまだ存在することを確認し、それ以外の場合は終了することです。唯一の欠点は、プロセスが実際に同期していることを確認できないか、TCPタイムアウトにかかっていることです。
それでは、何を試してみますか?
ベストアンサー1
コマンドラインでは、rsyncはTCPと直接通信しませんが、転送にはsshを使用します。
あなたはそれを使用することができます:
RSYNC_RSH='ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -o ServerAliveCountMax=2' rsync ...