Inicio / Blog
Publicado el 27 abril 2019

Rsync: 10 ejemplos prácticos de comandos 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. En este post vamos a mostrarte 10 ejemplos prácticos de uso tanto básico como avanzado del comando Rsync. Recuerda que tendrás que ser usuario root para poder ejecutarlos.

Ventajas del comando Rsync

  • Sincroniza de forma eficiente archivos y directorios entre dos sistemas Linux.
  • Es más rápido que el comando SCP (Secure Copy Protocol), ya que Rsync utiliza un protocolo de actualización remota que permite copiar únicamente las diferencias entre dos conjuntos de archivos. En la primera ejecución, copia todo el contenido de un archivo o directorio desde origen a destino, pero ejecuciones posteriores copia únicamente los bytes y los bloques que han sido modificados.
  • Soporta la copia de enlaces simbólicos, y mantiene permisos, propietarios y grupos.
  • Consume menos ancho de banda, ya que realiza la compresión y descompresión de los datos en ambos extremos con cada envío y recepción de los mismos.

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).

Instalando Rsync en Linux

La mayoría de las distribuciones ya traen instalado Rsync por defecto. En el caso de que tu distribución no lo tenga instalado, puedes instalarlo fácilmente con los siguientes comandos:

# yum install rsync (para distribuciones basadas en Red Hat y Fedora)
# apt-get install rsync (para distribuciones basadas en Debian/Ubuntu)

Una vez instalado, vamos a ver nuestros 10 ejemplos prácticos.

1 – 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@proxadmin]# 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/proxadmin» dentro del directorio «/root/backups«.

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

2 – Copiar/sincronizar archivos y directorios remotamente

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

[root@proxadmin]# rsync -avz proxadmin/ 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

¿Y si lo que queremos es realizar lo mismo a la inversa? Imaginemos que queremos copiar el cotenido del directorio remoto «/home«, en el directorio local «/home/proxadmin«. Entonces este sería nuestro comando:

[root@proxadmin]# rsync -avzh root@192.168.0.101:/home/ /home/proxadmin/

3 – Rsync a través de SSH

Rsync nos permite utilizar el protocolo SSH para la transferencia de archivos y directorios, de ese modo  nos aseguraremos de que nuestra conexión será segura y encriptada, de manera que nadie pueda capturar nuestros datos. En Rsync, podemos especificar fácilmente el protocolo que deseamos utilizar con la opción «-e» seguida del protocolo que deseamos utilizar. Por ejemplo:

[root@proxadmin]# rsync -avzhe ssh proxadmin/ root@192.168.0.101:/home/

¿Y si el servidor al que deseamos conectarnos tiene un puerto distinto al puerto por defecto (22)? No hay problema, Rsync nos permite también especificar un puerto:

[root@proxadmin]# rsync -avzh -e 'ssh -p <numerodepuerto>' proxadmin/ root@192.168.0.101:/home/

4 – 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@proxadmin]# rsync -avzhe ssh --progress proxadmin/ root@192.168.0.101:/home/

5 – Incluir y excluir archivos o directorios

Las opciones «–include» y «–exclude» nos permiten indicar qué archivos o directorios deseamos incluir y excluir de nuestra transferencia de datos. En el siguiente ejemplo, le indicamos a Rsync que incluya sólo los archivos y directorios cuyo nombre comience por «R«, y que excluya el resto de archivos y directorios.

[root@proxadmin]# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.101:/var/lib/rpm/ /root/rpm
root@192.168.0.101's password:
receiving incremental file list
created directory /root/rpm
./
Requirename
Requireversion
sent 67 bytes received 167289 bytes 7438.04 bytes/sec
total size is 434176 speedup is 2.59

6 – Eliminando archivos en el destino

Si un archivo o directorio no existe en el origen de los datos a transferir, pero sí existe en el destino, es posible que desees eliminarlo en el destino. Para ello usamos la opción «–delete«:

[root@proxadmin]# rsync -avz --delete root@192.168.0.101:/home

7 – Transferir sólo los archivos con un peso concreto

En ocasiones podemos necesitar copiar/sincronizar sólo los archivos que tengan un peso máximo, esto lo podemos conseguir con la opción «–max-size«. En este ejemplo copiaremos sólo los archivos que tengan como tamaño máximo 400k.

[root@proxadmin]# rsync -avzhe ssh --max-size='400k' proxadmin/ root@192.168.0.101:/home/

8 – Eliminar automáticamente los archivos en origen tras la transferencia

Vamos a imaginar que tenemos un servidor de hosting donde cada noche se realizan copias de seguridad en local. Para mayor seguridad, queremos copiarlas a un servidor remoto y eliminarlas de local para recuperar espacio en el disco. Podemos ordenarle a Rsync que borre automáticamente los backups en el servidor de origen, después de haberlos transferido al servidor remoto, con la opción «–remove-source-files«.

[root@proxadmin]# rsync --remove-source-files -zvhe ssh backup.tar.gz root@192.168.0.101:/root/backups/
backup.tar.gz
sent 14.71M bytes received 31 bytes 4.20M bytes/sec
total size is 16.18M speedup is 1.10

[root@proxadmin]# ll backup.tar.gz
ls: backup.tar.gz: No such file or directory

9 – 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, con la consecuente tediosa tarea de eliminarlos después en destino. 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@proxadmin]# rsync --dry-run --remove-source-files -zvhe ssh 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)

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

Por defecto, Rsync sólo realiza una copia completa de los archivos la primera vez, luego simplemente copia/sincroniza los bloques y bytes que han cambiado desde la sincronización completa. Si quermos forzar a que realice una sincronización completa de nuevo, debemos usar la opicón «–W«:

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

Con todos estos ejemplos que te hemos mostrado ya puedes mover archivos entre tus máquinas de una forma segura y rápida con Rsync.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Digg thisBuffer this pageEmail this to someone

Entradas relacionadas:

Optimizando la memoria Swap de nuestro servidor La memoria SWAP (también conocida como espacio de intercambio o memoria virtual) es una partición en nuestro disco duro que se utiliza para almacenar las imágenes de procesos y datos que no es posible...
GlusterFS: crea tu almacenamiento distribuido Vivimos en un mundo donde la información está creciendo de forma impredecible y con ello nuestra necesidad de almacenar estos datos de un modo eficiente. Los sistemas de almacenamiento distribuido, do...
Creando un Raid0 para unir dos discos en Linux Si tienes un Servidor Dedicado seguramente estás familiarizado con el término RAID (Redundant Array of Inexpensive Disks) ya que la mayoría de los proveedores de servidores ofrecen sus máquinas con Ra...
Instalando PageSpeed en cPanel Mod_pagespeed es un módulo para el servidor web Apache que optimiza tu web antes de servirla, mejorando bastante el rendimiento y la latencia de la misma. Todos conocemos la importancia de utilizar si...

//
proxAdmin

En ProxAdmin le ofrecemos servicios de administración de servidores, soporte helpdesk externalizado y servicios IT especializados que le permitirán mantener una presencia en internet consistente y segura.

¿Tienes algo que decir?