While I get error messages if the Source or Destination is invalid, I don't get one for an invalid --link-dest . A link-dest of $HOME/... works while ~/... does not. ie rsync -avi --link-dest=$HOME/Desktop/folder2 ~/Desktop/folder1/ ~/Desktop/folder3/ and rsync -avi --link-dest=../Desktop/folder2 ~/Desktop/folder1/ ~/Desktop/folder3/ will both hard link, rsync -avi --link-dest=~/Desktop/folder2 ~/Desktop/folder1/ ~/Desktop/folder3/ does not. The problem is componded by the lack of a warning message
A leading ~ is a shell expansion that only occurs at the start of an arg. If you want the shell to expand it, get rid of the '=' in the --link-dest option: --link-dest ~/Desktop/folder2 Seems like a good idea to make rsync iterate over the --*-dest args and report problems.
The version in the git repository now reports on problems with the alternate-basis directories.