{{tag>astuces rsync ubuntu sudo transfert fichier}} ====== Rsync sous ubuntu avec sudo des deux cotés ====== 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. rsync ne permet pas ce fonctionnement ou la source et la destination sont deux machines distinctes, il s'agit d'une commande conceptuelle :p Pas de panique, c'est tout de même possible de faire ce rsync : ===== Methode 1 - sudo temporaire ===== ==== Préparation ==== Se logguer sur la machine cible, et s'accorder les droits de sudo sur rsync avec son utilisateur : * lancer la commande sudo visudo :monUser@machine-cible:~$ sudo visudo * Ajouter la ligne : monUser ALL=NOPASSWD: /usr/bin/rsync * Enregistrer et quitter l'editeur ==== Copie des données ==== * Se connecter sur la machine source * Lancer la commande suivante pour lancer le transfert : monUser@machine-source:~$ sudo rsync -avrp -t -e 'ssh -l monUser' --rsync-path "sudo rsync" /chemin1/ machine-cible:/chemin2/ Il faut bien sur adapter les options et les chemins à ce que vous voulez faire 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 :-) Merci ubuntu :-) ===== Methode 2 - ssh-agent ===== Utiliser ssh-agent pour faire ce rsync : * se connecter a la machine cible en forwardant l'authentification la connexion a l'agent SSH depuis son poste : ssh monUser@machine-cible -A * sur la machine cible, récupérer et exporter le chemin du socket ssh-agent : monUser@machine-cible:~$ env | grep SSH_AUTH_SOCK * lancer un shell root en sudo : monUser@machine-cible:~$ sudo -s * faire un export de cette variable, comme par exemple : machine-cible:~# export SSH_AUTH_SOCK=/tmp/ssh-LaSyd12725/agent.12725 * il suffit ensuite de faire le rsync come si de rien n'etait : 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