在被建议停止使用Git部署到VPS后,我又回到了Rsync方法。不幸的是,Rsync 非常不友好,会发出不清楚的错误,有时错误消息与实际错误不匹配。所以,我不指望你会回答什么
rsync: Failed to exec r: No such file or directory (2)
rsync error: error in IPC code (code 14) at pipe.c(85) [sender=3.1.3]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in IPC code (code 14) at io.c(235) [sender=3.1.3]
方法。
首先我需要检查语法。
我有使用Ubuntu 22.04的 VPS和使用Ubuntu 20.04 的WSL 。遵循基本的安全要求,在 VPS 中我有:
- 创建非root用户
- 使用密码创建 SSH 密钥
- 禁止任何用户通过密码登录
- 完全禁止root用户登录
04-StagingBuild
现在我需要将本地目录的内容部署到var/www/staging.example.com
VPS。不幸的是,我还没有找到“统一的正确语法”。这个版本
rsync -azver -i ~/.ssh/Example-Deployer ./04-StagingBuild/ [email protected]:/var/www/staging.example.com
原因
rsync: Failed to exec r: No such file or directory (2)
rsync error: error in IPC code (code 14) at pipe.c(85) [sender=3.1.3]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in IPC code (code 14) at io.c(235) [sender=3.1.3]
还有一个版本--rsh=ssh
rsync -azver --rsh=ssh -i~/.ssh/Example-Deployer ./04-StagingBuild/ [email protected]:/var/www/staging.example.com
它导致
[email protected]: Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.3]
由于敏感信息,我无法发布实际的终端输出,但我确信所有目录都存在。此外,正常的 SSH 登录也可以正常工作。
如果您需要我检查某些内容,请告诉我 - 我将提供尽可能多的详细信息。
-e
的选项是rsync
(来自man rsync
):这意味着它期望一个值。您正在使用
-azver
so-e
视为r
值并尝试执行它。由于没有名为 的程序r
,因此失败。选项
-i
是所以
-i ~/.ssh/Example-Deployer
没有意义。看起来您正在使用另一个程序的命令行选项。我怀疑您正在考虑-i
的选项ssh
,但这不是 的-i
含义rsync
。请记住,每个工具都有自己的选项,您永远不应该假设含义是相同的。现在,如果
~/.ssh/Example-Deployer
您想使用 是密钥文件,您可以尝试:但是,详细信息将取决于您想要的行为。如果您更新问题并解释您想要 rsync 做什么,如果以上还不够,我可以更新。