Rsync (Remote Sync, es decir «sincronización remota») es una popular y poderosa herramienta utilizada para copiar y sincronizar archivos y directorios entre sistemas Linux/Unix remotos o locales. Con la ayuda de rsync, podemos fácilmente copiar/sincronizar datos entre directorios locales y remotos, a través de distintas unidades y redes, e incluso podemos respaldar archivos y hacer prácticamente cualquier cosa que involucre el copiado de datos. Hoy vamos a comentarles algunos usos prácticos que le podemos dar a rsync.
Primero que nada, ¿cuáles son las ventajas de usar rsync y no otras herramientas con los mismos propósitos? Pues posee varias:
-Es eficiente cuando se trata de copiar y/o sincronizar archivos en forma local o remota.
-Permite copiar permisos, grupos y propietarios.
-Es más rápido que otra conocida herramienta, scp, a la hora de hacer sincronizaciones, ya que necesita copiar archivos enteros solo la primera vez. A partir de la segunda, solo copiará los datos que hayan cambiado.
-Consume menos transferencia ya que comprime (y posteriormente descomprime en el destino) los datos.
CentOS o Ubuntu Linux con Rsync habiltiado y Acceso SSH completo desde $24,90/mes
Sintaxis de comando rsync
La sintaxis básica de rsync es la siguiente:
rsync opciones fuente destino
Las opciones utilidas más comunmente son:
-v: modo verboso.
-r: copia datos en forma recursiva pero no mantiene permisos ni propietarios.
-a: modo de archivo. Copia datos en forma recursiva y mantiene propietarios y permisos.
-z: comprime los datos al copiar.
-h: muestra números amigables para el usuario.
Su instalación es muy sencilla:
yum install rsync (en sistemas basados en Red Hat) apt-get install rsync (en sistemas basados en Debian)
Ejemplos de uso de Rsync
Veamos algunos ejemplos de su uso a continuación:
1) Copiar archivo a un directorio local:
En este caso, copiaremos el archivo «test.tar» ubicado en la carpeta «/home» hacia la carpeta «/tmp/pruebas»
rsync -zvh /home/test.tar /tmp/pruebas/
2) Copiar un directorio local a otro:
rsync -avzh /home/directorio1/* /tmp/pruebas/
Este comando copiará todos los archivos dentro de la carpeta «/home/directorio1» hacia la carpeta «/tmp/pruebas»
3) Copia de un archivo a un directorio de un servidor remoto:
rsync -zvh /home/test.tar root@000.000.0.000:/root/
Con la sintaxis anterior estaremos copiando el archivo «/home/test.tar» al directorio «/root» del servidor identificado con la IP 000.000.0.000.
4) Copia de un directorio a un servidor remoto:
A continuación copiaremos el contenido del directorio «/tmp/pruebas» hacia el directorio «/root» del servidor 000.000.0.000:
rsync -avz /tmp/pruebas/* root@000.000.0.000:/root/
5) Opción –dry-run
Esta es una opción muy interesante y más que nada muy útil para quienes recién están comenzando a usar rsync. ¿Qué hace esta opción? Pues se trata de una especie de simulacro: básicamente, nos muestra en pantalla lo que copiaría rsync, pero sin copiarlo. Veamos un ejemplo:
Creamos un directorio de prueba:
[root@servidor:~]mkdir /root/temp2
Realizamos la copia de un archivo usando –dry-run:
[root@servidor:~]rsync --dry-run -zvh prueba.txt /root/temp2/ prueba.txt sent 34 bytes received 15 bytes 98.00 bytes/sec total size is 0 speedup is 0.00 (DRY RUN)
Verificamos el contenido del directorio:
[root@servidor:~]ls -lah /root/temp2/ total 8.0K drwxr-xr-x 2 root root 4.0K Oct 11 17:58 . dr-xr-x--- 9 root root 4.0K Oct 11 17:58 ..
Gracias a –dry-run hemos podido previsualizar lo que sucedería si ejecutamos el comando normalmente, cosa que haremos a continuación:
[root@servidor:~]rsync -zvh prueba.txt /root/temp2/ prueba.txt sent 67 bytes received 31 bytes 196.00 bytes/sec total size is 0 speedup is 0.00 [root@servidor:~]ls -lah /root/temp2/ total 8.0K drwxr-xr-x 2 root root 4.0K Oct 11 18:01 . dr-xr-x--- 9 root root 4.0K Oct 11 17:58 .. -rw-r--r-- 1 root root 0 Oct 11 18:01 prueba.txt
Las posibilidades de rsync son muchísimas, esto que han visto no es más que el principio. La documentación de la herramienta y todo lo relacionado a ella pueden verlo en su página oficial.