It should be easier to run as a non-root user on the client. It is confusing now because we specify a username on the client in the host configuration, however the SSH session to the client is not using this username. Instead, the suggested RsyncClientCmd and RsyncClientRestoreCmd use the username 'root' , as follows.
$Conf{RsyncClientCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+';
Several variable substitutions are being done, but not for client username. Instead we can hard-code it in place of 'root'. This however means that the username on the client has to be specified in multiple places - in the file hosts, and 2 times in each client's
config.pl.
I request that things be simplified by doing a variable substitution for $sshLogin (password is not necessary when using authorized_keys2). We are allowed to specify multiple usernames in the hosts file for each client, so the first username could be used in this substitution.