Sincronizar directorios para mantener copias de Seguridad

De Comunidad Molinux

Existen distintas aplicaciones para gestionar el mantenimiento de copias de seguridad como Back In Time, Deja Dup, Snap Backup...

Pero en esta receta, se va a explicar una forma rápida y sencilla, para realizar copias incrementales y sincronizadas de los directorios que deseemos; Los comandos que veremos detalladamente en esta receta son:

rsync: nos permite realizar copias sincronizadas, es decir, cada vez que realiza una copia, comprueba que archivos y directorios han sido modificados, para actualizar la copia.

crontab: es un programa, que permite a usuarios de GNU/Linux ejecutar automáticamente comandos o scripts a una hora o fecha específica.

Para explicar cada uno de los pasos a seguir, y ver el funcionamiento de estos comandos, vamos a realizar un ejemplo, en el que nos crearemos dos directorios: carpeta_origen carpeta_destino

De forma que realizaremos la copia de la carpeta_origen y la guardaremos en carpeta_destino.

En primer lugar nos creamos los directorios, para este ejemplo, los directorios los hemos ubicado: carpeta_origen: Descargas

Nos creamos una carpeta nueva en el directorio Descargas, pulsando con el botón derecho sobre el área de la carpeta y seleccionamos Crear una carpeta.


Nota: se puede realizar la copia de cualquier directorio, solo hay que saber la ruta correcta donde se encuentra el directorio.


Imagen:copia1.png


Escribimos el nombre para el directorio, en este ejemplo carpeta_origen.

Imagen:copia2.png


Tenemos que asegurarnos, que el directorio carpeta_origen, contenga directorios, archivos..., para poder llevar a cabo este ejemplo.

Imagen:copia3.png


carpeta_destino: Documentos

Nos creamos otro directorio al que llamaremos carpeta_destino, en nuestro ejemplo, en el directorio Documentos, siguiendo los pasos explicados en el apartado anterior. A diferencia, de que este directorio lo dejamos vacío.

Una vez, creadas las dos carpetas, para poder llevar a cabo el ejemplo, vamos a explicar cómo utilizar los comandos rsync y crontab y cómo crear un script.


rsync

El comando rsync, como dijimos al principio, nos permite realizar copias sincronizadas, es decir, cada vez que realiza una copia, comprueba que archivos y directorios han sido modificados, para actualizar la copia. Su estructura es la siguiente: rsync -altgvb /ruta_carpeta_origen/ /ruta_carpeta_destino/


crontab

El comando crontab, es un programa, que permite a usuarios de GNU/Linux ejecutar automáticamente comandos o scripts a una hora o fecha específica. Su estructura es la siguiente: m h dom dow user command m → minuto en el que se ejecutará h → hora en el que se ejecutará dom → día del mes en el que se ejecutará dow → día de la semana en el que se ejecutará user → usuario command → ruta donde se encuentra el script

crontab -e → lo utilizaremos para editar el archivo crontab. crontab -l → lo utilizaremos para listar todas las tareas que tiene sincronizadas.

Algunos ejemplos con crontab:

01 * * * * → Se ejecutará al minuto 1 de cada hora todos los días

15 8 * * * → Se ejecutará a las 8:15 a.m. de cada día

00 5 * * 0 → Se ejecutará a las 5:00 a.m todos los domingos.

* 5 ** Sun → Se ejecutará cada minuto de 5:00 a.m a 5:59 a.m todos los domingos

01 * 20 7 * → Se ejecutará al minuto 1 de cada hora cada 20 de Julio

*/15 10-14 * * * → Se ejecutará cada 15 minutos de las 10:00 a.m a las 2:00 p.m


script

Un script, es un archivo que incluye un conjunto de comandos, ejecutados desde la primera linea hasta la última de forma secuencial. Para crear un script, tenemos que editar un fichero nuevo, y guardarlo con la extensión .sh, para ello, utilizaremos el Editor de textos, situado en Aplicaciones → Accesorios → Editor de textos

Imagen:copia4.png


Nos aparece esta ventana:

Imagen:copia5.png


La estructura que debe de tener un script es la siguiente:

La primera línea del script debe incluir #! /bin/bash

A continuación, vienen los comandos que queremos que se ejecuten en el script. En nuestro caso, como queremos realizar copias incrementales, utilizaremos el comando rsync.

Vamos a explicar nuestro ejemplo paso a paso:

1. Introducimos la primera línea del script:

#! /bin/bash

2. Hacemos rsync para que copie los cambios realizados de la carpeta_origen a la carpeta_destino.

rsync -altgvb /ruta de la carpeta origen/ /ruta de la carpeta destino

En nuestro ejemplo quedaría de la siguiente forma:

rsync -altgvb /home/veronica/Descargas/carpeta_origen/ /home/veronica/Documentos/carpeta_destino

3. Al ser una copia de seguridad, vamos a comprimir la copia realizada, para que esta ocupe menos espacio, ya que va a ser almacenada en un servidor, disco duro externo... tar -zcvf /ruta_carpeta_comprimida/nombre_archivo /ruta_de_carpeta_a_comprimir/

En nuestro ejemplo sería así:

tar -zcvf /home/veronica/Documentos/copia_seguridad.tar.gz /home/veronica/Documentos/carpeta_destino

Imagen:copia6.png


Guardamos el documento, para ello seleccionamos Archivo → Guardar como

Imagen:copia7.png


Le damos nombre al script, en nuestro caso, le hemos puesto script_copia.sh, y lo guardamos donde queramos, en nuestro caso lo hemos guardado en Documentos.

No hay que olvidar, añadir la extensión .sh al nombre del script.

Imagen:copia8.png


Pulsamos Guardar.

Imagen:copia9.png


Para garantizar que le hemos puesto la extensión .sh, si abrimos el script, con el Editor de texto, nos deberían de salir algunos comandos en color.

A continuación, Iniciamos un Terminal, situado en Aplicaciones → Accesorios → Terminal

Imagen:copia10.png

Imagen:copia11.png


En primer lugar, damos los privilegios necesarios al script. Para ello ejecutamos el siguiente comando:

chmod 755 /ruta_del_script

En nuestro caso, quedaría de la siguiente forma: chmod 755 /home/veronica/Documentos/script_copia.sh

A continuación, configuramos el crontab, para ello, ejecutamos el siguiente comando, para poder editar el archivo:

crontab -e


Imagen:copia12.png


Como veis, viene comentado un resumen de como utilizar crontab, para que quede claro cuáles son las tareas sincronizadas, vamos a borrarlo, simplemente con la tecla de retroceso.

Ahora que tenemos el archivo limpio, escribimos la tarea a sincronizar, por ejemplo, vamos ha establecer, que se realice el script_copia.sh cada 5 min. Para poder comprobar los cambios. Para ello escribimos:

  • /5 * * * * /home/veronica/Documentos/script_copia.sh

Imagen:copia13.png


Guardamos, para ello pulsamos Control + o


Imagen:copia14.png


Pulsamos Enter.

Y salimos pulsando Control + x

Para listar el contenido de crontab, podemos ejecutar el siguiente comando:

crontab -l

Así veremos el contenido de crontab, con todas las tareas sincronizadas que tenemos.

Imagen:copia15.png


Comprobamos la carpeta_destino, y el archivo comprimido, para ver que se ha llevado a cabo la copia de seguridad.

Imagen:copia16.png


Como podemos observar, la copia se ha realizado correctamente, y también podemos encontrar el directorio comprimido, donde lo habíamos ubicado:

Imagen:copia17.png


Para comprobar que el rsync, funciona correctamente, debemos añadir archivos, documentos, directorios... nuevos, para comprobar que, cuando realice la copia, haya actualizado la copia.

Añadimos un nuevo archivo a la carpeta_origen, Calendario_cambio...

Imagen:copia18.png


Esperamos los 5 min. correspondientes y comprobamos en la carpeta_destino a ver si ha sido modificado.

Imagen:copia19.png


Como vemos, esta se ha modificado.

Por último, nos vamos a crear un documento, con el Editor de textos, y lo guardamos en carpeta_origen.

Imagen:copia20.png


La carpeta_origen, quedará de la siguiente forma:

Imagen:copia21.png


Tras esperar los 5 min. volvemos a comprobamos en carpeta_destino, y vemos que ha sido actualizada.

Imagen:copia22.png


Para realizar una última comprobación, abrimos el documento de la carpeta_origen recién creado, y lo modificamos.

Imagen:copia23.png


Lo guardamos. Y tras 5 min. comprobamos el documento de la carpeta_destino, para ver si ha modificado el contenido.

Imagen:copia24.png


Como podemos comprobar, se ha modificado correctamente.

Por último, si comprobamos el directorio comprimido, abriéndolo por ejemplo con el gestor de archivadores, pulsando sobre el directorio comprimido con el botón derecho del ratón y elegimos Abrir con gestor de archivadores.

Imagen:copia25.png


Podemos comprobar que está comprimido correctamente.

Imagen:copia26.png

Herramientas personales