服务器重启后 rsync 失败

服务器重启后 rsync 失败

通常我使用命令

rsync -av --delete someroot/somedir user@remote_server_ip:/someroot/.

在我的开发服务器上同步somedir到远程服务器。它工作正常。但在远程服务器重新启动后,此命令不再起作用。它显示以下错误消息:

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(463) [sender=2.6.8]

但 SSH 服务仍能正常工作。我可以用ssh user@server_ipaddress它登录服务器。我该如何让它rsync再次工作?

更新: rsync在本地也无法工作。它给出如下错误:

[root@videochatweb1 web]# ./sync_client.sh
building file list ... rsync: link_stat "/opt/web/client/index.php"     failed: Permission denied (13)
done

sent 29 bytes  received 20 bytes  98.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at main.c(892)    [sender=2.6.8]

更新 2

我编译了源代码 rsync并将其重新安装在服务器上。现在它可以工作了。感谢所有的建议。

答案1

由于错误消息显示“rsync 协议错误”,这表明 rsync 正在使用该rsync协议进行通信,并且不是 ssh。因此,您的测试虽然表明ssh有效,但可以找到解决方案。

我认为远程服务器rsync --daemon在重启之前可能已经将 rsync 作为守护进程运行()。重启后它没有自动重新启动。

我看到两种解决方案:

  1. 在远程服务器上重新启动rsync --daemon。将其放入/etc/init.d或类似的东西中,以便它在下次重启后重新启动。
  2. 改用sshrsync 协议。

ssh用于 rsync,请设置环境变量:

export RSYNC_RSH=ssh

或者添加-e ssh到您的 rsync 命令。

答案2

有时,这些 rsync 错误代码是由于客户端和服务器之间的 rsync 版本不同造成的,您能检查两者的版本号吗?

  • 您在客户端和服务器上使用什么操作系统?

相关内容