调整 rsync TCP 超时

调整 rsync TCP 超时

我通过发出命令在我自己的 C++ 程序中使用 rsyncsystem("rsync -rauzvq root@host:/folder");

我用它来保持多个系统同步。

现在我遇到的问题是,当远程主机关闭并且仍然与我的程序同步时,我的程序在 TCP 超时期间挂起。所以我想,我会调整 rsync 套接字的 TCP 超时参数,但我不知道如何调整(--sockopts 不起作用)。

解决此问题的另一种方法是进行分叉系统调用并检查 rsync pID 在一定超时后是否仍然存在,否则将其终止。唯一的缺点是我无法检查进程是否真正同步或只是挂在 TCP 超时上?

那么,你们会尝试什么?

答案1

在命令行中,rsync 并不直接与 TCP 通信,而是依赖 ssh 进行传输。

您可以使用:

RSYNC_RSH='ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -o ServerAliveCountMax=2' rsync ...

相关内容