Rsync requires rsync-path when remote rsync is in path

pathrsync

I am quite confused as to why rsync requires –rsync-path flag even when remote rsync is in path.

Consider:

$ rsync -avze 'ssh -p 22' --delete public/ pmatos@domain.com:~/public_html
bash: /usr/local/bin/rsync: No such file or directory
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(601) [sender=3.0.7]

then I tried adding –rsync-path

$ rsync -avze 'ssh -p 22' --rsync-path=/usr/bin/rsync  --delete public/ pmatos@domain.com:~/public_html
sending incremental file list
...

So, the first rsync was not successful because it was searching for rsync in /usr/local/bin but as soon as I pass the obvious path for rsync using –rsync-path, then it works.

Why is this? (this command line is the one issued by rake deploy in octopress)

Best Answer

My memory is now quite fuzzy on this but the reason this was happening was that I used GNU stow on rsync at some point and created some symlinks that confused rsyncs location. This was sorted after much hair-pulling. I am now much lighter on hair but on the other hand I have a working rsync. That must be a win if you ask me.