Como usar Rsync

Rsync o Remote Sync (Sincronización Remota) es una potente y versátil herramienta que nos permite copiar y sincronizar nuestros datos de forma local y remota entre diferentes directorios, discos y redes, muy útil para realizar copias de seguridad o migraciones de datos rápidas entre dos máquinas Linux.



Sintaxis básica del comando Rsync

> > >

# rsync opciones origen destino


Las opciones más comunes usadas con Rsync son:

  • -v: verbose (muestra un registro de la transferencia).
  • -h: human readable (muestra la salida numérica en un formato comprensible).
  • -r: recursive (copia los datos de forma recursiva, pero no conserva las fechas ni los permisos de los datos de origen).
  • -a: archive mode (copia los datos de forma recursiva, y además preserva los enlaces simbólicos, los propietarios, los permisos y las fechas de los datos de origen).
  • -z: compress (comprime los datos durante la transferencia de los mismos).




Copiar/sincronizar un archivo o directorio localmente


       Con el siguiente comando, copiaremos el archivo «backup.tar.gz» localmente de un directorio a otro distinto, en este caso «/root/backups«. Verás que si el directorio de destino no existe, Rsync lo creará automáticamente.

>
>
>
>
>

[root@hdtest]# rsync  -zvh  backup.tar.gz  /root/backups/
created directory /root/backups
backup.tar.gz
sent 34.71M bytes received 31 bytes 3.27M bytes/sec
total size is 36.18M speedup is 1.10

       Vamos a ver ahora cómo copiar localmente un directorio en lugar de un archivo. El siguiente comando, copiará el directorio «/home/hdtest» dentro del directorio «/root/backups«.

>
>
>
>
>
>
>

>

[root@hdtest]# rsync  -avzh  /home/hdtest  /root/backups/
sending incremental file list
hdtest/
hdtest/archivo1.txt
hdtest/archivo2.txt
hdtest/archivo3.txt
sent 8.99K bytes received 3 bytes 3.33M bytes/sec
total size is 8.99K speedup is 1.00

Copiar/sincronizar archivos y directorios remotamente


       El siguiente comando copiará el directorio local «/home/hdtest» al directorio «/home» de un servidor remoto (192.168.0.101).


>
>
>
>
>
>
>
>
>

[root@hdtest]# rsync  -avz  hdtest root@192.168.0.101:/home/
root@192.168.0.101's password:
sending incremental file list
./
archivo1.txt
archivo2.txt
archivo3.txt
sent 93369 bytes received 91 bytes 9476.80 bytes/sec
total size is 91313 speedup is 1.00

Mostrar el progreso de la transferencia


       Si deseamos poder visualizar el progreso de la transferencia desde un servidor a otro, el siguiente comando, con la opción «–progress» nos mostrará los archivos y el tiempo restante para finalizar la transferencia:

>

[root@hdtest]# rsync  -avzhe --progress  hdtest/  root@192.168.0.101:/home/

Forzar la transferencia completa en lugar de sólo los cambios


       Rsync sólo realiza una copia completa de los archivos la primera vez, luego simplemente sincroniza los bloques y bytes que han cambiado desde la sincronización completa.

       Si queremos forzar a que realice una sincronización completa de nuevo, debemos usar la opción «–W«:

>

[root@hdtest]# rsync  -zvhWe backup.tar.gz  root@192.168.0.101:/root/backups/

Probar un comando Rsync sin realizar ningún cambio


       Si eres nuevo en el uso de Rsync y todavía no sabes muy bien lo que estás haciendo al ejecutar el comando, es posible que cometas un error que copie o sincronice archivos y directorios no deseados.

       Para evitar esto,  tenemos la opción « –dry-run«, que te permite utilizar un comando para ver la salida sin llegar a ejecutar.

       Si el resultado es el deseo, sólo tendrás que volver a ejecutar el mismo comando eliminando la opción «– –dry-run«.

>
>
>
>

[root@hdtest]# rsync  --dry-run --remove-source-files -zvhe  backup.tar.gz  root@192.168.0.101:/root/backups/
backup.tar.gz
sent 35 bytes received 15 bytes 100.00 bytes/sec
total size is 16.18M speedup is 323584.00 (DRY RUN)