· Tutorial ·

Sincronizar directorios locales y remotos con rsync

En esta guía explicaremos la utilización de rsync para mejorar la productividad en los sistemas basados en Linux.

¿Qué es rsync?

Rsync es una utilidad que permite transferir y sincronizar archivos o directorios de manera eficiente entre una máquina local o servidor remoto.

Sintaxis básica

Sintaxis básica en entorno local

La sintaxis básica para rsync en entornos locales es la siguiente:

rsync [modificadores opcionales] [origen] [destino]

Sintaxis básica en servidor remoto

La sintaxis básica para rsync entre un entorno local a un entorno remoto es la siguiente:

rsync [modificadores opcionales] [origen] [usuario]@[host]:[destino]

Y viceversa:

rsync [modificadores opcionales] [usuario]@[host]:[origen] [destino]

Instalar rsync

Muchas distribuciones Linux incluyen el paquete rsync preinstalado. En el caso de que no venga preinstalado, puedes hacerlo de forma manual con el siguiente comando:

  • Distribuciones basadas en Debian (Ubuntu, etc):
apt-get install rsync
  • Distribuciones basadas en RPM (Fedora, CentOS, etc):
yum install rsync
  • MacOS:
bew install rsync

¡Así de fácil! Para verificar que se ha instalado, puedes obtener la versión con el siguiente comando:

rsync -version

Ejemplos de uso

En este primer ejemplo creamos los directorios origen y destino. Seguidamente, crearemos 5 ficheros en el directorio origen y veremos la magia de rsync.

  1. Primero creamos los dos directorios:
cd ~
mkdir origen
mkdir destino
  1. Creamos 5 ficheros de ejemplo en el directorio origen:
touch original/archivo{1..5}
  1. A continuación, sincronizaremos el contenido del directorio origen con destino mediante el uso de rsync:
rsync origen/* destino

El * indica que sincronice todo el contenido del directorio

En caso de que se añadiesen o se modificasen ficheros en el directorio origen y se volviese a ejecutar el comando rsync, solo se sincronizarían los archivos nuevos y modificados evitando así copiar archivos innecesarios.

Modificadores opcionales más utilizados

A continuación, se especifican algunos de los modificadores opcionales que se le pueden añadir al uso de rsync:

  • -a o --archive esta opción nos activa: -rlptgoD, que significa:
    • -r recursivo
    • -l copiar enlaces simbólicos como enlaces simbólicos.
    • -p preservar los permisos.
    • -t preservar la fecha de modificación / creación del fichero.
    • -g preservar el grupo de los ficheros.
    • -o preservar el propietario de los ficheros.
    • -D conservar archivos del dispositivos y conservar ficheros especiales.
  • -v o --verbose para mostrar información del proceso.
  • -e o --rsh sirve para especificar una shell remota, por ejemplo, si se quieren hacer rsync entre servidores.
  • --delete elimina archivos en el directorio de destino si no existen en el directorio de origen.
  • -z o --compress nos comprime los datos durante la transferencia.

Ejemplos de uso con modificadores

En este primer ejemplo sincronizaremos el contenido de la carpeta /var/log del servidor 10.0.0.11 a la carpeta /tmp de nuestro servidor mediante la shell de SSH.

rsync -avz -e 'ssh' [email protected]:/var/log /var/log /tmp/log

A continuación, llevaremos a cabo la misma operación, pero en este caso con el tag --delete, para que se borren los ficheros en destino que no existan en origen:

rsync -avz --delete -e 'ssh' [email protected]:/var/log /var/log /tmp/log

Conclusiones

En conclusión, con rsync puedes transmitir trasferencias de ficheros a través de conexiones de red o directorios locales. Su flexibilidad hace que sea una muy buena opción para muchas operaciones a nivel de ficheros.

Un buen dominio de rsync te permite diseñar operaciones complejas de copias de seguridad i obtener un control sobre cómo y que se transfiere.

i