因此,我尝试使用rsync
. 我使用的命令是:
$ rsync --progress -avz -e "ssh [email protected] -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/
这是提示的内容:
[email protected]'s password: [I typed the password here]
bash: 1.2.3.4: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.3]
1.2.3.4
远程主机地址被解释为命令似乎很奇怪?!我不确定这是如何以及为什么会发生的。如何更新命令以达到预期结果并开始复制文件?
我很确定您不想在 -e 标志中包含 ssh 命令的 user@host 部分。尝试
该
ssh
命令与 中的-e
(or--rsh
) 选项一起使用时rsync
,不需要按名称提及远程主机,因为这是源规范的一部分(在您的命令中)。在您的情况下,使用就足够了
rsync
将执行-e
与源路径一起给出的命令。如果您使用另一个-v
. 它很可能看起来像在这里,您可以看到这
1.2.3.4
将被解释为以用户身份在远程主机上执行的命令root
(将应该作为命令行参数执行的实际命令)。rsync
在文件副本的源端启动一个“发送者”,在目标端启动一个“接收者”。然后这两个进程在彼此之间传递实际数据和校验和等以执行文件复制。您在上面看到的ssh
命令是rsync
用于(尝试)在远程主机上启动发送者的命令。--server --sender
等是rsync
用于此目的的内部命令行标志。该rsync
手册基本上说“不要自己使用这些选项”。在您的情况下,您可以在错误消息中看到接收方(
rsync
在本地运行)在与远程主机上的发送方通信时遇到问题。这是因为发送方没有正确启动,而这又是由于错误的ssh
命令造成的。