在通过 rsync 通过非常差的连接传输文件时遇到了问题(我正尝试将文件上传到云服务器)。
大约一分钟后,rsync 基本上会挂起。这是我尝试执行上传的方式:
rsync -avz --progress -e "ssh" ~/target.war root@my-remote-server:~/
没有错误消息或其他信息。它只是挂起并显示以下内容:
7307264 14% 92.47kB/s 0:07:59
据我所知,对远程端点执行 ping 操作似乎没有丢失数据包。
我的本地机器是 Mac。
任何关于如何解决此问题的帮助都很好。谢谢。
答案1
尝试不使用 -z 选项,如果必须压缩,则可以将 -C 添加到 ssh 命令(否则不需要 -e ssh 部分,因为这是默认设置)。
答案2
由于我们无法知道连接问题的原因,我建议--partial
使用 选项rsync
。它只是能够重新启动中断的下载/上传。
--partial
默认情况下,如果传输中断,rsync 将删除任何部分传输的文件。在某些情况下,保留部分传输的文件更为可取。使用 --partial 选项告诉 rsync 保留部分文件,这将使文件其余部分的后续传输速度更快。
如果您想避免连接长时间挂起的可能性,您可以使用以下--timeout
选项:
--timeout=TIMEOUT
此选项允许您设置最大 I/O 超时(以秒为单位)。如果在指定时间内没有传输数据,则 rsync 将退出。默认值为 0,表示无超时。
nonzero
我更喜欢混合这两个选项,当我从命令中捕获返回代码时重新上传/下载rsync
。
一些 rsync 返回代码示例:
23 Partial transfer due to error 24 Partial transfer due to vanished source files 30 Timeout in data send/receive