ssh 上的 rsync “协议数据流中的错误”(代码 12)。SSH 有效

use*_*229 84 ssh rsync

我试过:

rsync -v -v -e 'ssh -p YY' ./testfile me@XXXXX:/home
Run Code Online (Sandbox Code Playgroud)

错误信息

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)
Run Code Online (Sandbox Code Playgroud)

这工作正常:

ssh -p YY me@XXXXX
Run Code Online (Sandbox Code Playgroud)

这向我表明问题既不sshd是未运行也不是 YY 端口被防火墙设置。反正我查过了。

还会有什么问题?

编辑:问题似乎是“自我解决”。第二天我无法复制。我启动了本地计算机。也许值得注意的是,我的 IP 地址与上次不同。现在 rsync 神奇地起作用了。如果它消失了,我会很感激猜测它可能会是什么。

小智 122

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

我在 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]
Run Code Online (Sandbox Code Playgroud)

原来这只是一个错误输入目标路径的问题。该apps目录不存在。当我将其static:sites/myapp.com改为(sites目录确实存在)时,错误消失了。

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

  • 我的问题是:远程磁盘已满。 (2认同)

Flo*_*ker 37

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

sudo apt-get install rsync
Run Code Online (Sandbox Code Playgroud)

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

  • 我遇到了代码 12 错误,并且没有关于未找到 rsync 命令的消息。一旦安装,错误就消失了。 (2认同)

Arj*_*jen 5

您在远程端的登录脚本是否会在标准输出上产生垃圾?检查这个

ssh -p YY me@XXXXX /bin/true > out.txt
Run Code Online (Sandbox Code Playgroud)

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

if [ ! -t 1 ]; then
  echo garbage
fi
Run Code Online (Sandbox Code Playgroud)


小智 5

如果远程系统上的 rsync 路径与本地系统假定的路径不同,也可能会发生此错误。您可以通过指定 -vv (甚至更多 vs)来查看发生了什么。如果这是问题,您可以使用 --rsync-path 选项指定 rsync 的远程路径。

  • 谢谢,这确实解决了我的问题...现在可以使用 `--rsync-path=/bin/rsync` 同步到我的 Synology 盒子 (2认同)