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

Benjamin R. Haskell rsync at benizi.com
Wed Oct 19 10:02:04 MDT 2011

On Wed, 19 Oct 2011, Kevin Korb wrote:

> Because it is an even bigger joy to be able to type 'ssh newhost' and 
> have it just work even though you can't talk to newhost.  You can do 
> that by properly configuring ssh in ~/.ssh/config with something like 
> this:
> Host accessiblehost
>  User cameron
> Host newhost
>  ProxyCommand ssh accessiblehost -W %h:%p
>  User root

+1.  Seems easier than a DIY script.

But to answer the original question:

> On 10/19/11 03:40, Cameron Simpson wrote:
>> 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?
>> [...]
>> 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?

rsync has to parse the URL you're passing.  The fact that it then takes 
that and runs something like `$RSYNC_RSH -l user host` is because rsync 
expects it's handing the connection duties off to something that uses 
rsh-like calling conventions.  So, it's "desirable" because rsh-like 
tools traditionally expect it.

If rsync didn't parse the URL and split it out, each tool would have to 
do its own {user}@{host} parsing.  So, it's not fully "necessary". 
(Most of the tools probably do have that kind of parsing.)  It just 
makes things easier for tools that use the '-l' convention.


More information about the rsync mailing list