Jua*_*oto 12 ssh rsync corruption packetloss
尝试使用以下rsync命令更新服务器上的文件:
rsync -ravq -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
Run Code Online (Sandbox Code Playgroud)
corrupt packet 错误不断被抛出,特别是:
rsync: writefd_unbuffered failed to write 4092 bytes to socket [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (11337 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /home/lapo/package/rsync-3.0.9-1/src/rsync-3.0.9/io.c(605) [sender=3.0.9]
Run Code Online (Sandbox Code Playgroud)
这可能与ssh超时有关,因为它似乎发生在大(r)文件中。另外,我一直在使用 WinSCP 超时。这只会发生在我身上;与我一起工作的几个使用此服务器的人没有同样的问题。
rsync从 Windows 7 中的 Cygwin 终端使用Centos 6.3 服务器。
我不确定还有哪些其他信息可能有用或如何获取这些信息。我会根据任何建议更新问题或添加评论。
我应该如何解决这个问题?
非常感谢!
acu*_*ich 15
我不确定是什么导致了corrupt packet断开连接的问题,但您可能会发现 rsync--partial或--partial-dir选项在传输大文件时很有用,这样当您重新启动传输时,它将继续传输停止的位置,而不必重新开始传输再次整个文件:
--partial-dir=.rsync-partial
所以你可以像这样修改你的原始命令:
rsync -rav --progress --partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
Run Code Online (Sandbox Code Playgroud)
或者
rsync -rav --progress --partial-dir=.rsync-partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
Run Code Online (Sandbox Code Playgroud)
请注意,对于此示例,我删除了-q( --quiet) 选项并--progress在第一个示例和--partial-dir=.rsync-partial第二个示例中添加了该选项。
--partial和之间的区别在于--partial-dir=.rsync-partial后者创建一个目录,将部分文件与完全传输的文件分开,如果这对您在接收(服务器)端很重要。
在rsync的手册页将进一步详细解释这一点,虽然我也会指出一个重要的安全说明的手册页:
重要提示: --partial-dir 不应被其他用户写入,否则存在安全风险。例如,避免“/tmp”。
| 归档时间: |
|
| 查看次数: |
38372 次 |
| 最近记录: |