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)