Ver destacados

Rsync Linux: Cómo usar y ejemplos comando

Manual completo para saber cómo usar Rsync con ejemplos de Rsync para saber cómo usar este comando.
Escrito por
21.1K Visitas  |  Publicado feb 21 2020 14:00
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


El uso de comandos en Linux es algo más que natural ya que estos son el corazón de Linux desde hace muchos años, es por ello que debemos ser conscientes en la forma como usamos estos comandos ya que, así como algunos son prácticos para tareas fundamentales, otros pueden resultar peligrosos si no los gestionamos correctamente. Uno de los comandos más funcionales de Linux es el protocolo rsync el cual te explicará Solvetic en detalle a través de este tutorial. Vamos a ver primero qué es rsync.

 

En la actualidad mantener una infraestructura de cualquier tamaño sin ningún respaldo puede considerarse una locura, un disco puede fallar en cualquier momento y podrías perder información tan valiosa como la contabilidad de la empresa. En esta entrada hablaremos cómo usar Rsync, una de las mejores herramientas para los respaldos en sistemas *nix. Veremos desde lo más básico hasta ejemplos más avanzados con scripts y ejemplos que puedas aplicar en tu entorno de trabajo. Será un manual para saber cómo se usa rysnc.

 

La necesidad de tener la misma información en distintos lugares viene siendo una que cada vez va tomando más fuerza, esto debido a que nuestro espacio de trabajo es variable y queremos tener nuestras herramientas siempre con nosotros o inclusive como medidas de respaldo.

 

Tutorial para copiar, borrar y mover archivos o directorios en Linux con comandos desde la terminal.

 

¿Qué es rsync?
Es una herramienta de código abierto de transferencia de archivos y directorios entre una ubicación y otra. Sus ventajas se basan principalmente en la compresión de la información a enviar, permite que la transferencia se realice mediante un canal SSH y que transfiere solo los archivos y trozos de archivos que han sido modificados en lugar de transferir el archivo completo nuevamente, algo parecido a lo que sucede al transferir las diferencias en un archivo bajo el control de versiones Git.

 

El comando rsync (Remote Sync), es un comando desarrollado para las tareas de copia y sincronización de archivos y directorios ya sea de forma remota o local en sistemas Linux o UNIX.

 

Con este comando podemos realizar las copias desde:

 

  • De forma local
  • Usando un shell remoto
  • A través de un demonio rsync remoto

 

 

Usos Rsync
Entre los diferentes usos que se le dan a rsync se encuentran los siguientes:

 

  • Respaldos automatizados a discos o servidores remotos.
  • Sincronización de archivos y directorios remotos.
  • Transferencia común de archivos.

 

 

Ventajas Rsync

 

  • Es más rápido que scp (Secure Copy) porque rsync utiliza un protocolo de subida que permite transferir solo la diferencia entre los archivos, la primera vez transfiere todo el archivo para la segunda vez solo los cambios que pueda haber.
  • Está diseñado para respaldos en remoto.
  • Soporta la copia de toda la permisología de los archivos, por ejemplo, dueño, grupos soft y hard link.
  • Utiliza menos ancho de banda al utilizar compresión mientras se envían los archivos.

 

 

Rsync posee una funcionalidad de transferencia delta la cual permite reducir la cantidad de datos que son enviados a través de la red permitiendo que solo sean enviadas las diferencias entre los archivos de origen y los archivos existentes en el destino remoto, es por ello que rsync es ideal para copias de seguridad y duplicación.
Rsync actúa en el proceso de búsqueda de archivos a transferir usando un algoritmo checkqq de lqquick el cual se encarga de buscar los archivos que han sufrido algún tipo de modificación.

 

Características Rsync
Algunas de sus principales características son:

 

  • Integra funciones de excluir opciones similares a GNU tar
  • Cuenta con soporte para copiar enlaces, dispositivos, propietarios, grupos y permisos de Linux
  • Añade un modo de exclusión CVS el cual permite ignorar los mismos archivos que CVS ignoraría en su función
  • No requiere privilegios de superusuario (root)
  • Podremos hacer uso de shell remoto como ssh o rsh
  • Ofrece canalización de transferencias de archivos con el fin de minimizar los costos de latencia en la red
  • Compatible con demonios rsync autenticados o anónimos
  • Es más veloz que scp

 

 

Vamos a ver cómo usar rsync y parámetros rsync para poder realizar tareas como rsync copiar solo archivos nuevos o rsync borrar archivos destino.

 


1. Cómo usar rsync

 

La sintaxis de uso de este comando es la siguiente:

rsync opciones recurso destino
Variables Rsync
Al usar esta sintaxis podemos añadir algunas variables como:

 

  • -v: modo detallado.
  • -r: esta opción copia los datos de forma recursiva sin dejar las marcas de tiempo y el permiso durante el proceso.
  • -a: modo de archivo el cual permite copiar archivos de forma recursiva y conserva enlaces simbólicos, permisos de archivos, propiedad de usuarios y grupos y marcas de tiempo.
  • -z: esta opción comprime los datos del archivo.
  • -h: modo legible por humanos, números de salida en un formato legible por humanos .

 

 

Ahora veamos algunos ejemplos de cómo usar este comando. Al final del tutorial Solvetic te dará otros parámetros de uso de rsync en Linux.

 


2. Cómo instalar rsync

 

Paso 1

En la mayoría de sistemas actuales, rsync está instalado por defecto, pero si no es así podemos ejecutar lo siguiente:
yum install rsync (Red Hat – CentOS - Fedora)
apt-get install rsync (Debian - Ubuntu)

 

Paso 2

En todo caso debemos confirmar la instalación de rsync, en algunos sistemas como Ubuntu 20 ya viene por defecto:

 

 


3. Copiar archivos y copiar directorios con rsync


El primer uso de rsync es copiar o sincronizar un archivo o directorio de forma local. Vamos a ver cómo copiar archivos rsync, copiar directorios con rsync y sincronizar dos directorios con rsync.

 

Paso 1

Para ello ejecutaremos lo siguiente
rsync -zvh “archivo” “destino”

 

 

Paso 2

Allí podemos ver detalles como:

 

  • Datos enviados
  • Cantidad de datos recibidos
  • Velocidad de transferencia
  • Tamaño total

 

Paso 3

Si el caso es copiar un directorio de forma local vamos a ejecutar lo siguiente:
rsync -zvh “directorio” “destino”

 

 


4. Copiar o sincronizar carpetas remotas rsync o directorio remoto

 

Paso 1

Podemos copiar o sincronizar archivos de forma local a un equipo remoto, para ello usaremos la siguiente sintaxis:
rsync -avz archivo/ root@192.168.0.xxx:/destino/

 

 

Paso 2

Siempre que usemos la IP remota debemos ingresar la contraseña de root de dicho equipo remoto. Ahora, si vamos a copiar un directorio remoto a nuestro servidor local usaremos la siguiente sintaxis:
rsync -azvh root@192.168.0.xxx:/destino/ directorio/

 

 


5. Rsync SSH cómo usar


SSH (Secure Shell) es un mecanismo de seguridad adicional para la transferencia de datos, esto se logra ya que SSH hace uso de una conexión segura con cifrado de alta estandarización.

 

Paso 1

Si vamos a copiar un archivo local a un equipo remoto con SSH, debemos hacer uso de la opción "-e" con el nombre del protocolo que desea usar:
rsync -avzhe ssh root@192.168.0.xxx:/destino /directorio

 

 

Paso 2

Para copiar un archivo local a un servidor remoto usaremos la siguiente sintaxis:
rsync -avzhe ssh “archivo” root@192.168.0.xxx:/destino/

 

 

Paso 3

Podemos validar en el directorio remoto que se ha copiado el archivo o directorio:

 

 

 


6. Rsync mostrar progreso de transferencia de archivos o directorios


Este es un método para una mejor administración de la transferencia, esto se logra con el parámetro –progress:
rsync -avzhe ssh --progress /origen root@192.168.0.xxx:/destino

 

 


7. Incluir o excluir directorios rsync


Las opciones –include y –exclude son opciones que nos permiten ya sea incluir o excluir archivos, también nos permite especificar los archivos o directorios a incluir en la sincronización o excluir archivos y carpetas que no deben ser transferidas.

 

Su uso es el siguiente:

rsync -avze ssh --include 'Letra*' --exclude '*' root@192.168.0.xxx:/destino

 

 


8. Rsync eliminar archivos y directorios


En caso de que un archivo o directorio no esté en el origen, pero ya esté disponible en el destino, podemos eliminar ese archivo o directorio durante el proceso de sincronización, para esto podemos usar –delete con el fin de borrar los elementos que no estén en el equipo de destino, ejecutaremos lo siguiente:
rsync -avz --delete root@192.168.0.xxx:/destino

 

 


9. Rsync Limitar tamaño de archivos


Con el parámetro –max-size podemos indicar cual es el tamaño máximo de los objetos a transferir con rsync, esto ayuda a controlar el espacio remoto:
rsync -avzhe ssh --max-size='300k' /origen/ root@192.168.0.xxx:/destino

 

 


10. Rsync eliminar archivos origen si la transferencia fue correcta

 

 

Con la variable –remove-source-files es posible que los archivos que han sido sincronizados en el origen sean eliminados solo si todo el proceso ha sido correcto, para ello usaremos lo siguiente. Vemos que el archivo de origen ha sido borrado.

rsync --remove-source-files -zvh “archivo” /destino/

 

 


11. Ejecutar rsync sin afectar los archivos


Esta es una opción ideal para personas que no conocen a fondo el poder de rsync ya que muestra lo que hará el comando mas no afecta el origen, esto se logra con el parámetro –dry-run, por ejemplo. Podemos ver que el archivo sigue allí.
rsync --dry-run --remove-source-files -zvh “archivo” /destino/

 

 


12. Limitar ancho de banda rsync


Con el parámetro –bwlimit será posible definir que tasa de red ha de usar rsync para las tareas de sincronización, esto se logra de la siguiente forma:
rsync --bwlimit=200 -avzhe ssh  /origen/  root@192.168.0.xxx:/destino

 

 


13. Backup con Rsync


En ocasiones debemos respaldar cierta información antes de hacer modificaciones y en caso de algún error recuperar desde el Respaldo, empezaremos con un laboratorio haciendo respaldo de una carpeta a otra. De esta forma crearemos una backup con rsync de forma completa y segura.

 

 

Paso 1

Empezamos verificando que rsync esté instalado.
[user@Solvetic ~]$ which rsync
/usr/bin/rsync
Paso 2

Crearemos 2 carpetas para el origen y destino de los archivos.
mkdir {respaldo1, respaldo2}
Paso 3

Creamos varios archivos en la carpeta respaldo1 en este caso no importa el tamaño de los archivos.
[user@Solvetic ~]$ touch respaldo1/file{1..75}
Paso 4

El directorio debería tener 75 archivos. Hacemos respaldo.
[user@Solvetic ~]$ ls respaldo1/
file1   file14  file19  file23  file28  file32  file37  file41  file46  file50  file55  file6   file64  file69  file73
file10  file15  file2   file24  file29  file33  file38  file42  file47  file51  file56  file60  file65  file7   file74
file11  file16  file20  file25  file3   file34  file39  file43  file48  file52  file57  file61  file66  file70  file75
file12  file17  file21  file26  file30  file35  file4   file44  file49  file53  file58  file62  file67  file71  file8
file13  file18  file22  file27  file31  file36  file40  file45  file5   file54  file59  file63  file68  file72  file9
Paso 5

Para respaldar los archivos al respaldo2 usamos. El origen debe terminar en / de lo contrario copiaria su carpeta y no el contenido.
rsync -r respaldo1/ respaldo2
Paso 6

SI entramos en el respaldo2 podemos ver los 75 archivos incluso podemos comprobar que son 2 directorios idénticos usando diff.
[user@Solvetic ~]$ diff respaldo1 respaldo2
Paso 7

En caso de crear un softlink de un archivo del directorio 1
ln -s file30 file100
Paso 8

Al utilizar rsync con -r no sincronizará el softlink en este caso usamos. Si nos fijamos esta vez sí tendremos el softlink sincronizado.
rsync -a respaldo1/ respaldo2
Nota
Si no estamos seguro de lo que vamos a respaldar podemos usar una simulación con -n y en conjunto con -v puede ser muy util.
[user@Solvetic ~]$ rsync -anv respaldo1/ respaldo2
sending incremental file list


sent 606 bytes  received 12 bytes  1236.00 bytes/sec
total size is 6  speedup is 0.01 (DRY RUN)

 

 


14. Otros parámetros Rsync


Como hemos mencionado, estos son algunos de los parámetros adicionales a usar con rsync en Linux:

 

Rsync parámetros
  • -t, --times: conserva la modificación del tiempo
  • -g, --group: conserva los grupos
  • -o, --owner: conserva el propietario del objeto
  • -B, --block-size=TAMAÑO: fuerza un tamaño de bloque de suma de verificación fijo
  • T, --temp-dir = DIR: este valor crea archivos temporales en el directorio DIR
  • z, --compress: comprime los datos del archivo durante la transferencia
  • -4, --ipv4: usa solo IPv4
  • -6, --ipv6: usa solo IPv6

 

 

Existen muchas variables más, pero con estas son más que suficientes para que puedas sacar el máximo potencial de rsync en Linux. Hemos visto cómo utilizar rsync con las opciones más útiles, en conjunto con herramientas como cron y scripts en bash, python tendremos todo lo necesario para hacer nuestros respaldos sin necesidad de herramientas de terceros.

 

Tutorial para poder eliminar archivos y directorios con comandos desde la terminal de Linux.

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!