在连接不良的情况下传输大文件时,Rsync 会挂起

在连接不良的情况下传输大文件时,Rsync 会挂起

在通过 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  

相关内容