我试过:
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.com
(sites
目录做过存在),错误就消失了。
如果路径中的最终目录不存在则没问题(我可以这样做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
但还存在其他可能的原因。