rsync 错误 + 未找到命令

rsync 错误 + 未找到命令

我正在尝试从 AWS 服务器中提取一个项目,但由于某种我不明白的原因,rsync 不起作用。当我尝试运行此命令时:

vinicius@Inspiron-5537:~/Desktop/PHP$ rsync --protect-args -aP -e "ssh [email protected] -i ~/Desktop/Projeto.pem" "[email protected]:/var/www/projeto/" .

我收到以下错误:

bash: 84.26.56.23: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: remote command not found (code 127) at io.c(226) [Receiver=3.1.1]

但奇怪的是,如果我使用 ssh 服务器

ssh [email protected] -i ~/Desktop/Projeto.pem

它登录得很好!谁能告诉我发生了什么事吗?我应该如何继续从服务器中提取我的文件。我不知道是否与此有关,但是/var/www/projeto/由 root 用户拥有,但所有用户至少都具有读取权限。我的客户端是Ubuntu 16.04,我的服务器是Ubuntu 14.04。

答案1

使用

rsync --protect-args -aP -e "ssh -i ~/Desktop/Projeto.pem" "[email protected]:/var/www/projeto/" .

人同步 状态

-e, --rsh=COMMAND 指定要使用的远程 shell

-e, --rsh=COMMAND 此选项允许您选择替代远程 shell 程序用于 rsync 的本地副本和远程副本之间的通信。通常,rsync 默认配置为使用 ssh,但您可能更喜欢在本地网络上使用 rsh。

如果此选项与 [user@]host::module/path 一起使用,则远程 shell COMMAND 将用于在远程主机上运行 rsync 守护进程,并且所有数据将通过该远程 shell 连接传输,而不是通过与远程主机上正在运行的 rsync 守护进程的直接套接字连接。请参阅上面的 lq 通过远程外壳连接使用 RSYNC-DAEMON 功能 rq 部分。

如果 COMMAND 作为单个参数呈现给 rsync,则 COMMAND 中允许使用命令行参数。您必须使用空格(而不是制表符或其他空格)来分隔命令和参数,并且可以使用单引号和/或双引号来保留参数中的空格(但不能使用反斜杠)。请注意,在单引号字符串内加倍单引号会得到一个单引号;同样对于双引号(尽管您需要注意 shell 正在解析哪些引号以及 rsync 正在解析哪些引号)。一些例子:

CW -e 'ssh -p 2234'

CW -e 'ssh -o "ProxyCommand nohup sshfirewall nc -w1 %h %p"' (请注意,ssh 用户也可以在其 .ssh/config 文件中自定义特定于站点的连接选项。)

您还可以使用 RSYNC_RSH 环境变量选择远程 shell 程序,该变量接受与 -e 相同的值范围。

另请参阅受此选项影响的 --blocking-io 选项。

所以额外的[电子邮件受保护]是什么打破了它。

相关内容