Algunas notas sueltas, pendientes de explicación
Si necesitamos que rsync se conecte a la máquina remota con una identidad concreta, podemos forzarlo con la siguiente opción
rsync -e 'ssh -i /home/<usuario>/.ssh/<identidad>'
Solemos encontrar esta opción cuando lo que queremos es copiar archivos de usuarios específicos. Sin embargo, esto no es necesario, ya que mediante el uso de «sudo» podemos acceder a archivos de cualquier usuario y con las opciones -og podemos preservar la propiedad de usuario y grupo de cada archivo. Esto es especialmente conveniente cuando, estamos haciendo copias de seguridad de directorios de varios usuarios.
Respecto al uso de sudo, y aunque parezca una obviedad, para no liarnos conviene tener en mente en qué máquina necesitamos usarlo.
Si necesitamos usar sudo en la máquina local, basta con ejecutar sudo rsync (si queremos automatizar esta tarea y evitarnos tener que autenticar cada vez, ver lo referido al archivo sudoers)
Si lo que queremos es que rsync se ejecute con sudo en la máquina remota, deberemos ejecutar el comando con la siguiente opción:
el siguiente parámetro:
--rsync-path="sudo rsync"
Sin embargo, nos encontrarmos con la necesidad de realizar la autenticación de algún modo en la máquina remota. Hay varias maneras de hacer esto pero la más sencilla consiste en modificar el archivo sudoers para que no sea necesario realizar la autenticación.
Primero, identificamos la ruta en la que se encuentra rsync:
which rsync
/usr/bin/rsync
Ahora editamos el archivo /etc/sudoers
y añadimos la siguiente línea:
sudo visudo
<usuario> ALL=NOPASSWD:<ruta a rsync>
que básicamente significa que no se pida la contraseña para el usuario en cuestión cuando se esté ejecutando el comando especificado. Es una manera de restringir la ejecución sin contraseña y con privilegios de administrador sólo al caso que necesitamos, evitando crear un agujero más grande de lo estrictamente necesario.
No olvidemos que la modificación del archivo sudoers debe hacerse siempre con el comando visudo. Básicamente, este comando invoca un editor de texto convencional pero con verificación de sintaxis, lo que previene errores de configuración que podrían bloquear operaciones para las que se necesita privilegios de administrador, dejándonos, en el peor de los casos, con un sistema roto. El nombre visudo proviene del clásico editor vi. Sin embargo, es posible configurar el sistema para utilizar otros editores más cómodos como nano. De hecho, ésta es la configuración por defecto en Ubuntu.
A todo esto, la ruta a rsync suele ser:
/usr/bin/rsync
Nota: si bien esta modificación del archivo sudoers suele hacerse en la máquina remota, que es donde principalmente queremos ahorrarnos tener que escribir la contraseña, también puede ser útil hacerlo en la máquina local cuando lo que queremos es ejecutar un script de manera automática (por ejemplo, para automatizar la creación de copias de seguridad) que necesite acceder a archivos protegidos en la máquina local.