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
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.
- Primero creamos los dos directorios:
cd ~
mkdir origen
mkdir destino
- Creamos 5 ficheros de ejemplo en el directorio origen:
touch original/archivo{1..5}
- 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' test@10.0.0.11:/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' test@10.0.0.11:/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.