当前位置: 首页>>技术教程>>正文


ssh上的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可以神奇地工作了。鉴于它的消失,我猜想它可能是什么。

最佳方法

如果您指定了不存在的远程路径,也可能会出现此错误。

我在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.com(sites目录确实存在)时,错误消失了。

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

次佳方法

当目标主机上未安装rsync时,出现此错误。在我的情况下,错误消息还显示rsync: command not found。一个简单的

sudo apt-get install rsync

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

第三种方法

您在远端的登录脚本是否在stdout上产生垃圾?用这个检查

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

如果out.txt包含数据,请在您的.profile.bashrc中标识有问题的语句,并将其包装在

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7616.html,未经允许,请勿转载。