why does rsync translate user at host into '$RSYNC_RSH -l user host'?

Cameron Simpson cs at zip.com.au
Wed Oct 19 01:40:34 MDT 2011

Why does rsync believe it knows more about the use of the token to the left
of the colon than the program which will be used as the remote connection?

I have a script called sshto with accepts targets like this:


and constructs the requisite ssh ProxyCommand options to do a multihop
ssh to host3 to run a command. Very useful if connecting to firewalled
nonroutable hosts or to take a particular route through a network.

It is a particular joy to run:

  rsync -e sshto foo host1!host2!host3:bah

and have things "just work".

So here I am attempting to deposit a kit onto a newly installed
nonroutable machine:

  sshto cameron at accessiblehost!root at newhost blah

which works just fine. But if I call rsync with this:

  rsync -e sshto -aH kit/ cameron at accessiblehost!root at newhost:kit/

what it invokes is:

  sshto -l cameron at accessiblehost!root newhost rsync .....

Since sshto is my own tool I can probably have it cope with this
mangling of my target string into "-l foo bah", and undo it.

But WHY does rsync believe this is desirable, or even necessary?

Cameron Simpson <cs at zip.com.au> DoD#743

If NT is the answer, you didn't understand the question.        - Peter Blake

More information about the rsync mailing list