通常我使用命令
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 作为守护进程运行()。重启后它没有自动重新启动。
我看到两种解决方案:
- 在远程服务器上重新启动
rsync --daemon
。将其放入/etc/init.d
或类似的东西中,以便它在下次重启后重新启动。 - 改用
ssh
rsync 协议。
要ssh
用于 rsync,请设置环境变量:
export RSYNC_RSH=ssh
或者添加-e ssh
到您的 rsync 命令。
答案2
有时,这些 rsync 错误代码是由于客户端和服务器之间的 rsync 版本不同造成的,您能检查两者的版本号吗?
- 您在客户端和服务器上使用什么操作系统?