Ubuntu ne propose pas de compte root donc pour faire un “rsync [options] root@machine1:/chemin1/ root@machine2:/chemin2/” les choses se compliquent un peu.
Pas de panique, c'est tout de même possible de faire ce rsync :
Se logguer sur la machine cible, et s'accorder les droits de sudo sur rsync avec son utilisateur :
monUser@machine-cible:~$ sudo visudo
monUser ALL=NOPASSWD: /usr/bin/rsync
monUser@machine-source:~$ sudo rsync -avrp -t -e 'ssh -l monUser' --rsync-path "sudo rsync" /chemin1/ machine-cible:/chemin2/
Ca y est on a réussi a rsync des fichiers locaux que seul l'utilisateur root peut lire vers une machine distante ou seul l'utilisateur root peut ecrire
Utiliser ssh-agent pour faire ce rsync :
ssh monUser@machine-cible -A
monUser@machine-cible:~$ env | grep SSH_AUTH_SOCK
monUser@machine-cible:~$ sudo -s
machine-cible:~# export SSH_AUTH_SOCK=/tmp/ssh-LaSyd12725/agent.12725
machine-cible:~# rsync -avrp -t machine-source:/chemin1/ /chemin2/
Cette méthode a l'avantage de ne pas devoir mettre un sudo temporaire pour ce rsync