0

I'm trying to pull a project from an AWS server, but for some reason I don't understand, rsync is not working. When I try to run this command:

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

I get the following errors:

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]

but the weird part is that if I ssh the server with

ssh ubuntu@84.26.56.23 -i ~/Desktop/Projeto.pem

it logs in just fine! Can anybody tell me what is going on? How should I proceed to pull my files from the server. I don't know if it has something to do with, but the /var/www/projeto/ being owned by root user, but all the users have at least read permission. My client is Ubuntu 16.04, and my server is Ubuntu 14.04.

1

Use

rsync --protect-args -aP -e "ssh -i ~/Desktop/Projeto.pem" "ubuntu@84.26.56.23:/var/www/projeto/" .

man rsync states

-e, --rsh=COMMAND specify the remote shell to use

and

-e, --rsh=COMMAND This option allows you to choose an alternative remote shell program to use for communication between the local and remote copies of rsync. Typically, rsync is configured to use ssh by default, but you may prefer to use rsh on a local network.

If this option is used with [user@]host::module/path, then the remote shell COMMAND will be used to run an rsync daemon on the remote host, and all data will be transmitted through that remote shell connection, rather than through a direct socket connection to a running rsync daemon on the remote host. See the section lqUSING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTIONrq above.

Command-line arguments are permitted in COMMAND provided that COMMAND is presented to rsync as a single argument. You must use spaces (not tabs or other whitespace) to separate the command and args from each other, and you can use single- and/or double-quotes to preserve spaces in an argument (but not backslashes). Note that doubling a single-quote inside a single-quoted string gives you a single-quote; likewise for double-quotes (though you need to pay attention to which quotes your shell is parsing and which quotes rsync is parsing). Some examples:

CW -e 'ssh -p 2234'

CW -e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1 %h %p"' (Note that ssh users can alternately customize site-specific connect options in their .ssh/config file.)

You can also choose the remote shell program using the RSYNC_RSH environment variable, which accepts the same range of values as -e.

See also the --blocking-io option which is affected by this option.

so the extra ubuntu@84.26.56.23 is what broke it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.