¿Cómo usar Rsync para sincronizar directorios locales y remotos?
¿Alguna vez te ha pasado que necesitas transferir archivos de forma rápida y segura entre diferentes servidores o has perdido un archivo importante? Si la respuesta es sí, Rsync es la herramienta perfecta para ti. Rsync es una herramienta de sincronización de archivos y directorios de código abierto que te permite transferir archivos de forma rápida y segura entre servidores locales y remotos. Es una herramienta poderosa y muy versátil que puede ayudarte a mantener tus archivos actualizados y seguros.
En este tutorial, aprenderás cómo utilizar Rsync para sincronizar archivos y directorios entre diferentes servidores y cómo programar tareas de sincronización automáticas.
Para empezar este tutorial, necesitarás tener acceso a dos servidores: uno local y otro remoto. Además, necesitarás tener Rsync instalado en ambos servidores. Si no tienes Rsync instalado, no te preocupes, te mostraremos cómo hacerlo en la sección de preparación del sistema.
Conceptos básicos de Rsync
Rsync es una herramienta de sincronización de archivos y directorios para transferir archivos de forma rápida y segura entre servidores locales y remotos. Es una herramienta muy popular y ampliamente utilizada en el mundo de la informática y de la programación.
Aquí te explicamos algunos conceptos básicos de Rsync que debes conocer antes de comenzar a utilizarlo:
1. Sincronización: Rsync utiliza el algoritmo de sincronización de archivos delta para transferir solo las partes de los archivos que han sido modificadas. Esto, reduce significativamente el tiempo necesario para la transferencia de archivos.
2. Copia local vs. remota: En la sincronización local, Rsync se utiliza para sincronizar archivos entre dos directorios en el mismo servidor. En la sincronización remota, Rsync se utiliza para sincronizar archivos entre dos servidores diferentes.
3. Conexión segura: Rsync utiliza SSH para establecer una conexión segura entre los servidores locales y remotos. SSH es un protocolo de red seguro que se utiliza para la comunicación entre dos dispositivos.
Ahora que conoces los conceptos básicos de Rsync, vamos a pasar a la siguiente sección para preparar el sistema y poder utilizar esta herramienta.
Preparación del sistema
Antes de comenzar a utilizar Rsync, es necesario asegurarse de que esté instalado en ambos servidores y que se cumplan todos los requisitos necesarios.
Paso 1: Instalación de Rsync
Si Rsync no está instalado en tus servidores, puedes instalarlo utilizando el gestor de paquetes de tu sistema operativo.
En sistemas basados en Debian o Ubuntu, puedes instalar Rsync con el siguiente comando:
sudo apt-get install rsync
En sistemas basados en CentOS o Fedora, puedes instalar Rsync con el siguiente comando:
sudo yum install rsync
Paso 2: Acceso SSH
Rsync utiliza SSH para establecer una conexión segura entre los servidores. Por lo tanto, es necesario asegurarse de que tienes acceso SSH en ambos.
Paso 3: Verificación de la versión
Es importante verificar que la versión de Rsync instalada en ambos servidores sea la misma para evitar problemas de compatibilidad. Puedes verificar la versión de Rsync utilizando el siguiente comando:
rsync --version
Ahora que hemos preparado el sistema y hemos instalado Rsync, podemos pasar a la siguiente sección para aprender a sincronizar archivos y directorios con Rsync.
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]
Sincronización de archivos y directorios con Rsync
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
2. Creamos 5 ficheros de ejemplo en el directorio origen:
touch original/archivo{1..5}
3. 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
Sincronización local
Para sincronizar dos directorios en el mismo servidor, puedes utilizar el siguiente comando:
rsync -avzh /ruta/directorio-origen/ /ruta/directorio-destino/
Este comando sincroniza el contenido del directorio-origen con el directorio-destino. La opción -avzh
indica que Rsync debe sincronizar los archivos en modo archivo, en modo verbose, en modo compresión y en modo recursivo.
Sincronización remota
Para sincronizar dos servidores diferentes, puedes utilizar el siguiente comando:
rsync -avzh -e ssh usuario@servidor-origen:/ruta/directorio-origen/ /ruta/directorio-destino/
Este comando sincroniza el contenido del directorio-origen en el servidor-origen con el directorio-destino en el servidor local. La opción -e ssh
indica que Rsync debe utilizar SSH para establecer una conexión segura entre los servidores.
Sincronización en modo prueba
Si quieres verificar qué archivos se sincronizarán antes de realmente realizarlo, puedes utilizar el modo seco. El modo seco realiza una simulación de la sincronización sin realizar ninguna acción real. Puedes utilizar el siguiente comando:
rsync -avzh --dry-run /ruta/directorio-origen/ /ruta/directorio-destino/
info Este comando muestra una lista de los archivos que se sincronizarán si se ejecuta la sincronización real.
Sincronización de archivos excluyendo algunos
Si deseas sincronizar todos los archivos en un directorio, excepto algunos archivos específicos, puedes utilizar la opción --exclude
. Puedes utilizar el siguiente comando:
rsync -avzh --exclude 'archivo1.txt' --exclude 'archivo2.txt' /ruta/directorio-origen/ /ruta/directorio-destino/
Este comando sincroniza todos los archivos en el directorio-origen, excepto archivo1.txt
y archivo2.txt
.
Conclusiones
Rsync es una herramienta muy útil para sincronizar archivos y directorios entre servidores locales y remotos. Con los comandos básicos que hemos mostrado en este tutorial, puedes empezar a utilizar Rsync de manera efectiva.
Además, contiene muchas herramientas avanzadas muy interesantes. Algunas de las características avanzadas incluyen la compresión de archivos, la sincronización incremental, la exclusión de archivos específicos y muchas más.
Finalmente, ¡esperamos que este tutorial te haya sido útil y que empieces a utilizar Rsync para sincronizar tus archivos y directorios!