Cómo usar rsync para hacer una copia de seguridad de sus datos en Linux

Cómo usar rsync para hacer una copia de seguridad de sus datos en Linux

rsync es un protocolo diseñado para sistemas similares a Unix que ofrece una versatilidad increíble para la copia de seguridad y sincronización de datos. Se puede utilizar localmente para realizar copias de seguridad de archivos en diferentes directorios o se puede configurar para sincronizar a través de Internet con otros hosts.

Se puede usar en sistemas Windows pero solo está disponible a través de varios puertos (como Cygwin), por lo que en este manual hablaremos sobre cómo configurarlo en Linux. Primero, necesitamos instalar / actualizar el cliente rsync. En las distribuciones de Red Hat, el comando es “yum install rsync” y en Debian es “sudo apt-get install rsync”.


El comando en Red Hat / CentOS, después de iniciar sesión como root (tenga en cuenta que algunas distribuciones recientes de Red Hat admiten el método sudo).


El comando en Debian / Ubuntu.

Utilice rsync para copias de seguridad locales

En la primera parte de este tutorial, realizaremos una copia de seguridad de los archivos de Directory1 a Directory2. Estos dos directorios están en el mismo disco duro, pero funcionarían exactamente igual si los directorios existieran en dos unidades diferentes. Podemos abordar esto de varias maneras diferentes, según el tipo de copias de seguridad que desee configurar. En la mayoría de los casos, la siguiente línea de código será suficiente:

$ rsync -av --delete /Directory1/ /Directory2/

El código anterior sincronizará el contenido de Directory1 con Directory2 y no dejará ninguna diferencia entre los dos. Si rsync encuentra que Directory2 tiene un archivo que Directory1 no tiene, lo eliminará. Si rsync encuentra un archivo que ha sido modificado, creado o eliminado en Directory1, reflejará esos mismos cambios en Directory2.

Hay muchos conmutadores diferentes que puede usar para que rsync lo personalice para sus necesidades específicas. Esto es lo que el código mencionado le dice a rsync que haga con las copias de seguridad:

1. -a = recursivo (recursor en directorios), enlaces (copiar enlaces simbólicos como enlaces simbólicos), permisos (mantener los permisos), tiempos (mantener los tiempos de modificación), grupo (mantener el grupo), propietario (mantener el propietario), mantener los archivos del dispositivo y mantener archivos especiales.
2. -v = detallado. La razón por la que creo que la información detallada es importante es que puede ver exactamente qué está respaldando rsync. Piense en esto: y si su disco duro se daña y comienza a eliminar archivos sin su conocimiento, entonces ejecuta su script rsync y envía esos cambios a sus copias de seguridad, eliminando así cualquier instancia de un archivo que no deseaba. ¿de?
3. –delete = Esto le dice a rsync que elimine todos los archivos que están en Directory2 que no están en Directory1. Si opta por utilizar esta opción, también le recomiendo utilizar las opciones detalladas, por las razones mencionadas anteriormente.

Usando el script anterior, aquí está la salida generada usando rsync para hacer una copia de seguridad de Directory1 en Directory2. Tenga en cuenta que sin el modificador detallado, no recibirá información tan detallada.

La captura de pantalla de arriba nos dice que File1.txt y File2.jpg fueron detectados como nuevos o cambiados de las copias existentes en Directory2, por lo que fueron respaldados. Consejo de novato: observe las barras inclinadas al final de los directorios en mi comando rsync; son necesarias, asegúrese de recordarlas.

Repasaremos algunos otros conmutadores útiles hacia el final de este tutorial, pero recuerde que para ver una lista completa puede escribir «man rsync» y ver una lista completa de los conmutadores que se pueden usar.

Esto lo cubre cuando se trata de copias de seguridad locales. Como puede ver, rsync es muy fácil de usar. Se vuelve un poco más complejo cuando lo usa para sincronizar datos con un host externo en Internet, pero le mostraremos una forma simple, rápida y segura de hacerlo.

Utilice rsync para copias de seguridad externas

rsync se puede configurar de varias formas diferentes para copias de seguridad externas, pero repasaremos el método más conveniente (también más fácil y más seguro) de tunelizar rsync a través de SSH. La mayoría de los servidores e incluso muchos clientes ya tienen SSH, y puede usarse para sus copias de seguridad de rsync. Le mostraremos el proceso de hacer una copia de seguridad de una máquina Linux a otra en una red local. El proceso sería exactamente el mismo si un host estuviera en Internet en algún lugar, solo tenga en cuenta que el puerto 22 (o cualquier puerto en el que haya configurado SSH) debe reenviarse a cualquier equipo de red en el lado del servidor.

En el servidor (la computadora que recibirá las copias de seguridad), asegúrese de que SSH y rsync estén instalados.

# yum -y instalar ssh rsync

# sudo apt-get install ssh rsync

Además de instalar SSH y rsync en el servidor, todo lo que realmente necesita hacer es configurar los repositorios en el servidor donde desea que se guarden los archivos y asegúrese de que SSH esté bloqueado. Asegúrese de que el usuario que planea usar tenga una contraseña segura, y también podría ser una buena idea cambiar el puerto en el que SSH escucha (el valor predeterminado es 22).

Ejecutaremos el mismo comando que usamos para usar rsync en una máquina local, pero incluiremos las adiciones necesarias para tunelizar rsync a través de SSH a un servidor en mi red local. Para el usuario «geek» que se conecta a «192.168.235.137» y usa los mismos modificadores que antes (-av –delete), ejecutaremos lo siguiente:

$ rsync -av --delete -e ssh /Directory1/ geek@192.168.235.137:/Directory2/

Si tiene SSH escuchando en un puerto que no sea el 22, deberá especificar el número de puerto, como en este ejemplo donde estoy usando el puerto 12345:

$ rsync -av --delete -e 'ssh -p 12345' /Directory1/ geek@192.168.235.137:/Directory2/

Como puede ver en la captura de pantalla anterior, el resultado que se obtiene al realizar una copia de seguridad en la red es aproximadamente el mismo que al realizar una copia de seguridad localmente, lo único que cambia es el comando que usa. También tenga en cuenta que pidió una contraseña. Esto es para autenticarse con SSH. Puede configurar las claves RSA para omitir este proceso, lo que también simplificará la automatización de rsync.

Automatización de copias de seguridad de rsync

Cron se puede utilizar en Linux para automatizar la ejecución de comandos, como rsync. Al usar Cron, podemos hacer que nuestro sistema Linux ejecute copias de seguridad todas las noches o con la frecuencia que desee.

Para editar el archivo de la tabla cron para el usuario con el que inició sesión, ejecute:

$ crontab -e

Debe estar familiarizado con vi para editar este archivo. Escriba «I» para insertar, luego comience a editar el archivo de la tabla cron.

Cron utiliza la siguiente sintaxis: minuto de la hora, hora del día, día del mes, mes del año, día de la semana, comando.

Puede ser un poco confuso al principio, así que déjame darte un ejemplo. El siguiente comando ejecutará el comando rsync todas las noches a las 10 p.m .:

0 22 * * * rsync -av --delete /Directory1/ /Directory2/

El primer «0» especifica el minuto de la hora y «22» especifica 22 horas. Como queremos que este comando se ejecute diariamente, dejaremos el resto de los campos con asteriscos y luego pegaremos el comando rsync.

Una vez que haya terminado de configurar Cron, presione Esc, luego escriba «: wq» (sin las comillas) y presione Enter. Esto guardará sus cambios en vi.

Cron puede ser mucho más profundo que eso, pero continuar con este tema estaría más allá del alcance de este tutorial. La mayoría de las personas solo querrán una simple copia de seguridad semanal o diaria, y lo que hemos mostrado le facilita lograrlo. Para obtener más información sobre Cron, consulte las páginas de manual.

Otras funciones útiles

Otra cosa útil que puede hacer es guardar sus copias de seguridad en un archivo zip. Deberá especificar dónde desea colocar el archivo zip y luego sincronizar ese directorio con su directorio de respaldo. Por ejemplo:

$ zip /ZippedFiles/archive.zip /Directory1/ && rsync -av --delete /ZippedFiles/ /Directory2/

El comando anterior toma los archivos de Directory1, los coloca en /ZippedFiles/archive.zip, luego rsyncs ese directorio con Directory2. Inicialmente, podría pensar que este método sería ineficaz para copias de seguridad grandes, ya que el archivo zip cambiará cada vez que se realicen cambios en un archivo. Sin embargo, rsync solo transfiere los datos modificados, por lo que si su archivo zip es de 10GB y luego agrega un archivo de texto a Directory1, rsync sabrá que eso es todo lo que agregó (aunque esté en un zip) y solo transferirá los pocos kilobytes de datos modificados.

Hay varias formas de cifrar sus copias de seguridad de rsync. El método más sencillo es instalar el cifrado en el propio disco duro (en el que se guardan los archivos). Otro método consiste en cifrar sus archivos antes de enviarlos a un servidor remoto (u otro disco duro, independientemente del medio en el que realice la copia de seguridad). Cubriremos estos métodos en artículos posteriores.

Independientemente de las opciones y funciones que elija, rsync está demostrando ser una de las herramientas de copia de seguridad más eficaces y versátiles hasta la fecha, e incluso un simple script rsync puede evitar que pierda sus datos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Experto Geek - Tu Guía en Tendencias Tecnológicas