Ejemplos sobre cómo usar RSYNC para copias de seguridad de datos locales y remotos y sincronizaciones

Ejemplos sobre cómo usar RSYNC para copias de seguridad de datos locales y remotos y sincronizaciones

RSYNC es una herramienta muy útil que permite que los administradores de sistemas de Linux sincronizan los datos localmente o con un sistema de archivos remoto a través del protocolo SSH o utilizando el demonio rsync. Usando rsync es más conveniente que simplemente copiar datos, porque es capaz de detectar y sincronizar solo las diferencias entre una fuente y un destino. El programa tiene opciones para preservar los permisos estándar y extendidos del sistema de archivos, comprimir los datos durante las transferencias y más. Veremos los más utilizados en esta guía.

En este tutorial aprenderás:

  • Cómo usar RSYNC para sincronizar datos
  • Cómo usar RSYNC con un sistema de archivos remoto a través de SSH
  • Cómo usar RSYNC con un sistema de archivos remoto a través del Daemon RSYNC
  • Cómo excluir archivos de la sincronización

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución
Software La aplicación RSYNC y opcionalmente el Daemon RSYNC
Otro No se necesitan requisitos especiales para seguir esta guía.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

RSYNC - Uso

Comencemos con el uso básico de RSYNC. Supongamos que tenemos un directorio en nuestro sistema de archivos local, y queremos sincronizar su contenido con otro directorio, tal vez en un dispositivo USB externo, para crear una copia de seguridad de nuestros archivos. En aras de nuestro ejemplo, nuestro directorio fuente será /mnt/data/fuente, y nuestro destino se montará en /run/medios/egdoc/destino. Nuestro destino contiene dos archivos: archivo1.TXT y archivo2.TXT, Mientras el destino está vacío. La primera vez que corremos rsync Todos los datos están copiados:

La ruta de destino es lo último que proporcionamos en el comando. Si ahora enumeramos su contenido, podemos ver que ahora contiene los archivos de origen:



$ LS/Run/Media/EGDOC/Destino/-L Total 0 -RW-R-R--. 1 EGDOC EGDOC 0 OCT 6 19:42 Archivo1.txt -rw-r-r--. 1 EGDOC EGDOC 0 OCT 6 19:42 FILE2.TXT

Las veces posteriores ejecutamos RSYNC para sincronizar los dos directorios, solo se copiarán nuevos archivos y archivos modificados: esto ahorrará mucho tiempo y recursos. Verifiquemos: primero modificamos el contenido del archivo1.txt dentro del directorio de origen:

$ echo linuxconfig>/mnt/data/source/file1.TXT

Entonces, correremos rsync Nuevamente, mira la salida:

$ rsync -av/mnt/data/source//run/medios/egdoc/destino enviando archivo de lista de archivos incrementales1.txt enviado 159 bytes recibió 35 bytes 388.00 bytes/seg El tamaño total es 12 La velocidad es 0.06

El único archivo copiado es el que modificamos, archivo1.TXT.

Crear una copia espejo de la fuente al destino

Por defecto rsync Solo se asegura de que todos los archivos dentro del directorio de origen (excepto el especificado como excepciones) se copian al destino: no se encarga de mantener idénticos a los dos directorios y no elimina los archivos; Por lo tanto, si queremos crear una copia espejo de la fuente en el destino, debemos usar el --borrar Opción, que causa la eliminación de los archivos existentes solo dentro del destino.

Supongamos que creamos un nuevo archivo llamado archivo3.TXT En el directorio de destino:

$ touch/run/medios/egdoc/destino/archivo3.TXT


El archivo no existe en el directorio de origen, así que si nos ejecutamos rsync con el --borrar opción, se elimina:

$ rsync -av --delete/mnt/data/source//run/media/egdoc/destino enviando la lista de archivos incrementales eliminar el archivo3.TXT ./ enviado 95 bytes recibidos 28 bytes 246.00 bytes/seg El tamaño total es 0 La aceleración es 0.00 

Dado que esta sincronización es potencialmente destructiva, es posible que desee lanzar primero RSYNC con el --corrido por secado opción, para que el programa muestre las operaciones que se realizarían, sin modificar realmente el sistema de archivos.

Sincronizar archivos de forma remota

Hasta ahora, vimos cómo usar RSYNC para sincronizar dos sistemas de archivos locales. El programa también se puede usar para sincronizar archivos de forma remota, utilizando un shell remoto como RSH o ssh, o el rsync demonio. Exploraremos ambos métodos.

Ejecutando rsync a través de SSH

En aras de nuestro ejemplo, seguiremos utilizando el mismo directorio de origen que utilizamos en los ejemplos anteriores, pero como destino, usaremos un directorio en una máquina remota con IP 192.168.122.32. Anteriormente configuré un servidor OpenSSH con un inicio de sesión basado en clave en la máquina, por lo tanto, no necesitaré proporcionar una contraseña para acceder a él.

Cómo podemos correrrsync a través de ssh? En primer lugar, para que funcione una sincronización remota, RSYNC debe instalarse tanto en la fuente como en la máquina remota. RSYNC intenta comunicarse con un sistema de archivos remoto utilizando un programa de shell remoto siempre que la ruta de destino o fuente contenga un : personaje. En versiones modernas de rsync ssh se usa por defecto; Para usar otro shell remoto o declarar el shell explícitamente, podemos usar el -mi opción y proporcionarlo como argumento. Supongo que nuestro directorio de destino en la máquina remota es /Home/EgDoc/Destino, Podemos correr:

$ rsync -av -e ssh/mnt/data/source/[email protected]:/home/egdoc/destino

Observe que especificamos el destino en el formulario @:/path/to/directorio.

Contactar a una máquina remota a través del demonio rsync

El otro método que podemos usar para sincronizar archivos con una máquina remota es mediante el uso de demonio rsync. Esto obviamente requiere que el demonio esté instalado y funcionando en la máquina de destino. RSYNC intenta contactar a la máquina remota que habla con el demonio siempre que la ruta de origen o destino contenga un :: (doble colon) separador después de la especificación del host, o cuando se especifica una URL RSYNC como rsync: //.



Supongo que el demonio rsync está escuchando en el puerto 873 (el valor predeterminado), en la máquina remota, podemos contactarla ejecutando:

$ rsync -av/mnt/data/fuente/192.168.122.32 ::módulo/destino

Alternativamente podemos usar un URL RSYNC:

$ rsync -av/mnt/data/source/rsync: // 192.168.122.32/módulo/destino

En ambos ejemplos, módulo (resaltado en el comando), no representa el nombre de un directorio en la máquina remota, sino el nombre de un recurso, o módulo En la terminología RSYNC, configurada por el administrador, y se hace accesible a través del demonio rsync. El módulo puede apuntar a cualquier ruta del sistema de archivos.

Excluir archivos de la sincronización

A veces queremos excluir algunos archivos o directorios de la sincronización. Básicamente, hay dos formas en que podemos lograr esta tarea: especificando un patrón de exclusión directamente con --excluir (Se pueden especificar múltiples patrones repitiendo la opción), o escribiendo todos los patrones en un archivo (uno por línea). Al usar el último método, debemos pasar la ruta del archivo como argumento al --excluir de opción.

Todos los archivos y directorios que coinciden, el patrón se excluirá de la sincronización. Por ejemplo, para excluir todos los archivos con el ".extensión de txt "que ejecutaríamos:

$ rsync -av/mnt/data/source//run/medios/egdoc/destino --exclude =*.TXT


Conclusiones

En este artículo, echamos un vistazo rápido a RSYNC, una herramienta muy útil que podemos usar para sincronizar archivos y directorios tanto en sistemas de archivos locales como remotos. Vimos las opciones más utilizadas del programa y lo que nos permitieron lograr, cómo especificar los directorios de origen y destino, y los métodos que podemos usar para contactar a un sistema de archivos remoto. Finalmente vimos cómo excluir archivos de la sincronización, especificando los patrones de exclusión directamente o dentro de un archivo. RSYNC tiene muchas opciones, demasiadas para mencionar aquí. Como siempre, podemos encontrar toda la información que necesitamos en el manual del programa!

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Mastering Bash Script Loops
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Ubuntu 20.04 Guía
  • Ejemplos de RSYNC en Linux
  • Bucles anidados en guiones Bash
  • Manipulación de Big Data para la diversión y las ganancias Parte 1
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?