rsync es una poderosa herramienta de sincronización y copia de archivos que se utiliza en sistemas Linux. Permite copiar y sincronizar archivos y directorios entre diferentes ubicaciones, ya sea localmente o entre sistemas remotos. A continuación, se muestra una guía paso a paso para usar rsync con ejemplos prácticos.

1. Instalación de rsync

En la mayoría de las distribuciones de Linux, rsync ya está preinstalado. Sin embargo, si necesitas instalarlo, puedes hacerlo con el siguiente comando:

Para sistemas basados en Debian/Ubuntu:

sudo apt-get update
sudo apt-get install rsync

Para sistemas basados en Red Hat/CentOS:

sudo yum install rsync

2. Sintaxis básica de rsync

La sintaxis básica de rsync es la siguiente:

rsync [opciones] origen destino
  • origen: La ubicación del archivo o directorio que deseas copiar o sincronizar.
  • destino: La ubicación donde quieres copiar o sincronizar los archivos o directorios.

3. Ejemplos de uso

  • Copia de un archivo localmente:
    rsync -avh /ruta/al/archivo.txt /ruta/de/destino/
    • -a: Modo archivo; preserva los permisos, tiempos de modificación, y enlaces.
    • -v: Modo detallado; muestra el progreso de la transferencia.
    • -h: Muestra los tamaños en un formato legible para humanos.
  • Sincronización de un directorio localmente:
    rsync -avh /ruta/al/directorio/ /ruta/de/destino/

    Nota: El uso de la barra inclinada (/) al final del directorio fuente es importante. Si se omite, rsync creará el directorio fuente dentro del directorio de destino.

  • Sincronización de archivos con un servidor remoto:
    rsync -avh /ruta/al/directorio/ usuario@servidor_remoto:/ruta/de/destino/
  • Sincronización de archivos desde un servidor remoto al local:
    rsync -avh usuario@servidor_remoto:/ruta/al/directorio/ /ruta/local/destino/

4. Opciones comunes de rsync

  • -z: Comprime los datos durante la transferencia para reducir el uso del ancho de banda.
  • --delete: Elimina en el destino los archivos que ya no están presentes en el origen.
  • -e ssh: Usa SSH para la transferencia de datos, asegurando una conexión segura.

5. Sincronización en tiempo real

Si deseas sincronizar continuamente en tiempo real, puedes utilizar rsync en conjunto con inotifywait, un comando que monitorea los cambios en el sistema de archivos.

Ejemplo básico:

while inotifywait -r -e modify,create,delete /ruta/al/directorio; do
rsync -avz /ruta/al/directorio/ usuario@servidor_remoto:/ruta/de/destino/
done

6. Uso avanzado: exclusiones y logs

  • Exclusión de archivos o directorios específicos:
    rsync -avh --exclude 'archivo_o_directorio' /ruta/al/directorio/ /ruta/de/destino/
  • Registro de la salida en un archivo de log:
    rsync -avh /ruta/al/directorio/ /ruta/de/destino/ --log-file=/ruta/al/logfile.log

7. Consideraciones de seguridad

  • Uso de SSH con rsync: Para asegurar la transferencia, es recomendable usar SSH.
    rsync -avh -e ssh /ruta/al/directorio/ usuario@servidor_remoto:/ruta/de/destino/

8. Conclusión

rsync es una herramienta versátil y poderosa para sincronizar y copiar archivos en Linux. Con esta guía, puedes comenzar a usar rsync de manera efectiva para diferentes tareas, desde copias locales hasta sincronización remota.