通过 ssh 进行 rsync “rsync 协议数据流错误”(代码 12)。ssh 可以正常工作

通过 ssh 进行 rsync “rsync 协议数据流错误”(代码 12)。ssh 可以正常工作

我试过:

rsync -v -v -e 'ssh -p YY' ./testfile me@XXXXX:/home

错误信息

opening connection using: ssh -p YY -l me 146.6.84.206 rsync ->-server -vvve.s . /home 
[sender] make_file(testfile,*,0)
send_file_list done
send_files starting
server_recv(2) starting pid=17537
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600)[sender=3.0.6]
_exit_cleanup(code=12, file=io.c, line=600): about to call exit(12)

这很好用:

ssh -p YY me@XXXXX

对我来说,问题既不是sshd没有运行,也不是端口 YY 被防火墙封住了。无论如何,我已经检查过了。

还有什么问题?

编辑:问题似乎已经“自行解决”。第二天我无法复制。我启动了本地计算机。也许值得注意的是,我的 IP 地址与上次不同。现在 rsync 神奇地工作了。鉴于它消失了,我很想猜测一下它到底是什么。

答案1

如果您指定不存在的远程路径,也会收到此错误。

我在 OS X 上遇到了这个错误:

$ rsync -avz public/ static:apps/myapp.com
building file list ... done
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/io.c(453) [sender=2.6.9]

原来只是输入了错误的目标路径。目录apps不存在。当我将其更改为static:sites/myapp.comsites目录做过存在),错误就消失了。

如果路径中的最终目录不存在则没问题(我可以这样做static:sites/mynewapp.com)但似乎任何先前的目录都必须已经存在。

答案2

rsync当目标主机上未安装时,我收到此错误。我的情况中的错误消息也显示rsync: command not found。一个简单的

sudo apt-get install rsync

在目标主机上解决了该问题。

答案3

远程端的登录脚本是否在 stdout 上产生垃圾信息?使用以下方法检查:

ssh -p YY me@XXXXX /bin/true > out.txt

如果包含数据,请识别或out.txt中的违规语句并将其包装在.profile.bashrc

if [ ! -t 1 ]; then
  echo garbage
fi

答案4

您可能需要输入 ssh 二进制文件的完整路径,即

rsync -v -v -e '/usr/bin/ssh -p YY' ./testfile me@XXXXX:/home

但还存在其他可能的原因。

相关内容