
[英]Is there a way to rsync files to a remote location that doesn't have rsync installed?
[英]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.