rsync 不同步文件

rsync 不同步文件

我遇到了一个奇怪的问题。我通常用rsync它来在服务器之间同步文件,但现在这个实用程序的行为很奇怪。

首先,这是我使用的命令:

server1# rsync -av -e ssh ./server1_dir/ [email protected]:/server2_dir/

它按预期启动同步过程,但没有同步任何文件,只同步了目录。实际上并不是所有目录,因为该rsync过程挂起很长时间,导致超时错误。

如果我终止该进程并再次尝试,它根本无法启动。我看到的唯一消息是:

sending incremental file list

我首先想到的是防火墙。但两台服务器都没有安装防火墙。我甚至尝试手动编译最新rsync版本,但没有成功。

有人能帮我解决这个问题吗?非常感谢。

更新。server1 上的 strace 输出

root@server1 [~]# ps auxf|grep [r]sync
root     13958  0.0  0.0  70676  1232 pts/0    S+   23:29   0:00  |       \_ rsync -avv -e ssh directory1 [email protected]:/home
root     13959  0.0  0.2  58436  3256 pts/0    S+   23:29   0:00  |           \_ ssh -l root 192.168.1.1 rsync --server -vvlogDtpre.isf . /root

root@server1 [~]# strace -p 13959
Process 13959 attached - interrupt to quit
select(7, [3 4], [], NULL, NULL

答案1

最后,问题解决了。虽然难以置信,但主网络接口上的 MTU 设置不正确。将 MTU 更改为 1460 后,同步过程已启动并立即完成。感谢大家的回答。

答案2

我最近遇到了同样的情况。两边的 strace 都显示它们在 select() 中等待另一边。然后我注意到服务器端在 netstat 中有一个很大的发送队列,所以我开始寻找网络级解决方案。我尝试像上面那样减少 MTU,但没有什么效果。然后我禁用了两边的 SACK,rsync 又开始工作了:

echo 0 > /proc/sys/net/ipv4/tcp_sack

有一些关于思科选择性确认和序列号随机化错误的讨论,这至少是造成这种差异的一个合理原因。

相关内容