繁体   English   中英

rsync 到远程位置退出,代码为 12

[英]rsync to remote location exits with code 12

我正在尝试将本地文件夹同步到远程位置。 这是我一周前成功运行的命令,但现在如果我运行:

    rsync -vrtzu\
        --chown=user:webadm
        --delete
        --exclude-from=.rsyncignore
        FOLDER/
   USER@REMOTE:/DESTINATION

然后我收到以下错误消息:

zsh:1: no matches found: --usermap=*:USER
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [sender=3.1.3]
make: *** [makefile:39: push] Error 12

该命令是从 makefile 运行的,因此是最后一行。 我使用的是常规 WSL2 Ubuntu shell,而不是 zsh。 我可以使用 USER@REMOTE ssh 进入远程位置。 我还检查了两个位置是否都安装了 rsync(相同版本)。 最后,远程位置上有足够的可用磁盘空间。

任何指针? 我应该检查什么以改进我的诊断?

提前致谢!

当远程 shell 与命令混淆时,可能会发生这种情况。 不确定它的确切原因和作用,但它修改了转义,使文件路径变得无效。

在您的情况下,shell 在登录时输出--usermap=*:USER

解决方案是使用chsh命令将远程 (zsh) shell 更改为 bash

我很确定这是一个 rsync 错误:

 zsh:1: no matches found: --usermap=*:USER

它只发生在远程机器的默认 shell 是zsh

它已在 rsync 3.2.3 (损坏的地方)和3.2.5 (错误消失的地方)之间的某处修复。


您可以通过将-vv传递给rsync来验证这一点。 这打印为命令调用 rsync 通过 SSH 在远程服务器上执行的第一个输出行。

在损坏的版本上,它会打印例如:

... ssh ... rsync --server -vvnlogDtpRe.LsfxCIvu "--usermap=*:user" "--groupmap=*:webadm"

在固定版本上,它打印例如:

... ssh ... rsync --server -vvnlogDtpRe.LsfxCIvu "--usermap=\*:user" "--groupmap=\*:webadm"

如您所见,他们插入了一个\来修复由zsh解释的字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM