Run rsync with root permission on remote machine
Try this solution. In your sudoers file (/etc/sudoers
) setup your user like this:
username ALL= NOPASSWD:/usr/bin/rsync
the NOPASSWD:/usr/bin/rsync
tells sudo
that when your user runs /usr/bin/rsync
or just rsync
that no password is needed.
Then your original --rsync-path="sudo rsync"
should work.
This is the solution I came up with:
rsync -R -avz -e ssh --rsync-path="echo mypassword | sudo -S mkdir -p /remote/lovely/folder && sudo rsync" /home/ubuntu/my/lovely/folder [email protected]:/remote/lovely/folder --delete
Bit of a mission!
The solution on this blog worked really well for me: http://www.pplux.com/2009/02/07/rsync-root-and-sudo/.
Basically:
stty -echo; ssh myUser@REMOTE_SERVER "sudo -v"; stty echo
rsync -avze ssh --rsync-path='sudo rsync' myUser@REMOTE_SERVER:/REMOTE_PATH/ LOCAL_PATH
The first line allows for interactive password entry, without showing the password on the screen. Works great for me on Ubuntu 9.04.