加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

ssh – 如何修复(相对)大文件的rsync损坏的数据包错误?

发布时间:2020-12-13 17:56:12 所属栏目:Linux 来源:网络整理
导读:尝试使用rsync命令更新服务器上的文件: rsync -ravq -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir 损坏的数据包错误不断被抛出,具体来说: rsync: writefd_unbuffered fail
尝试使用rsync命令更新服务器上的文件:
rsync -ravq -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir

损坏的数据包错误不断被抛出,具体来说:

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]

这可能与ssh超时有关,因为它似乎发生在大(r)文件中.此外,我一直在使用WinSCP获得超时.这只发生在我身上;我使用过这个服务器的几个人没有同样的问题.

在Windows 7中使用来自Cygwin终端的rsync,对着Centos 6.3服务器.

我不确定其他信息可能有用或如何获得它.我会根据任何建议更新问题或添加评论.

我该怎么解决这个问题?

非常感谢!

解决方法

我不确定什么可能导致丢失连接的损坏数据包问题,但您可能会发现rsync的–partial或–partial-dir选项在传输大文件时很有用,这样当您重新启动传输时它将继续传输离开而不必重新开始转移整个文件:

–partial-DIR = .rsync偏

所以您可以像这样修改原始命令:

rsync -rav --progress --partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir

要么

rsync -rav --progress --partial-dir=.rsync-partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir

请注意,对于此示例,我删除了-q( – quiet)选项并在第一个示例中添加了–progress选项,在第二个示例中添加了–partial-dir = .rsync-partial.

–partial和–partial-dir = .rsync-partial之间的区别在于,后者会创建一个目录,使得部分文件与完全传输的文件分开(如果这对您在接收(服务器端)方面很重要).

rsync manpage将进一步详细解释这一点,但我还要从手册页中指出一个重要的安全说明:

IMPORTANT: the –partial-dir should not be writable by other users or it is a security risk. E.g. AVOID “/tmp”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读