客户端:Gentoo,GCC 4.3.4,RSync 3.0.9服务器:Ubuntu 10.04.4 LTS,RSync 3.0.7
客户端和服务器通过互联网连接,大约2Mbps。 平安是好的。
RSync调用任何方向上的任何文件挂在随机文件上,然后在超时后失败:
[sender] io timeout after 30 seconds -- exiting rsync error: timeout in data send/receive (code 30) at io.c(140) [sender=3.0.9] [sender] _exit_cleanup(code=30, file=io.c, line=140): about to call exit(30)
在1/10 trys是正确传递。
我尝试添加SSH选项TcpRcvBufPoll = yes,KeepAlive = yes; 禁用并启用rsync压缩 – 无需更改。
我如何使rsync正常工作?
首先,我会尝试调高ssh传输的冗长度:
rsync -av -e "ssh -vv" /src user@host/dest
其次,它可能挂在远程端的文件或文件系统上。 你可以甩开遥控器,试图find相同的目标吗?
一种方法是使用tcpdump
tcpdump port 22 and host <IP>
和strace
strace -f -o xxx -p <PID of the rsync process>
两边跑。 当超时发生时,你应该至less可以在tcpdump的输出中看到不规则的东西。
随着新的信息可用,你应该能够追究问题的根源。
另外,在两台机器上运行traceroute或mtr以检查它们之间的路由/连接是否健康。