Realizar rsync como sudo en la máquina remota

Configuración en el servidor remoto

El primer paso es que podamos realizar un sudo rsync sin necesidad de contraseña en el servidor remoto. Para ello configuramos los permisos en el fichero de sudoers.

Antes de nada debemos conocer el path completo de rsynd, para ello ejecutamos:

whereis rsync

Recordad que la mejor forma de editar este fichero es mediante el comando visudo.

sudo visudo

Y añadimos una línea en el fichero con el siguiente contenido:

<nombre de usuario> ALL=NOPASSWD:<path a rsync>

Con esto ya podremos hacer un rsync con sudo en la máquina destino sin necesidad de introducir la contraseña. Esto es importante porque, si no se hace, el siguiente comando fallará con un error de permisos.

sudo rsync -avhL --progress --rsync-path="sudo rsync" \
-e "ssh -p 123456" usuario@xx.xx.xxx.x:/path/al/origen/en/remoto/ /path/al/destino/en/local/

De este modo hacemos sudo tanto en la máquina local como en la máquina remota.

-a nos copiará los ficheros y directorios de forma recursiva

-v nos mostrará los ficheros que va sincronizando

-h nos muestra la información en un formato legible para seres humanos (bytes, megas o gigas en lugar de bits)

-L copia el contenido de los enlaces simbólicos y nó solo los enlaces

--progress nos indicará el porcentaje de avance por cada fichero

--rsync-path es donde indicamos el path de rsync en el servidor remoto. En nuestro caso es donde indicamos sudo rsync para que se ejecute el rsync como sudo, no con nuestro usuario remoto

-e es una opción en la que podemos indicar configuraciones específicas para el ssh, como en este caso que es para indicar que el puerto no es el 22 sino el 123456