Tabla de Contenidos

Respaldos Diarios Linux

Con un servidor instalando y una base de datos corriendo, es posible preparar el sistema para que lleve a cabo respaldos diarios (nocturnos) de la base de datos.

Requisitos

Preparación

Para estos pasos hacemos login como root.

Instalamos los paquetes que sigue:

apt-get install python python-configparser python-dateutil python-pip fossil rsync

Si todo sale correctamente podemos terminar nuestra sesión.

Pasos

Configuración

Para estos pasos hacemos login con el usuario normal del sistema (p.ej.: administrador).

Primero, creamos una carpeta con una estructura de archivos para almacenar los respaldos diarios.

administrador@host ~ $ mkdir -p respaldos/db
administrador@host ~ $ mkdir -p bin/repolist

A continuación entramos a la carpeta respaldos:

cd respaldos

, y desde ella descargamos el software de Helpcom respaldarv2 como se indica en el artículo (copiado aquí, pero la versión original puede estar más actualizada):

administrador@host ~/respaldos $ fossil clone https://chiselapp.com/user/lmachucab/repository/respaldarv2 respaldarv2.fossil
administrador@host ~/respaldos $ fossil open respaldarv2.fossil

Esto crea una nueva carpeta con la ruta $HOME/respaldos/respaldarv2, y dentro el script principal de trabajo, llamado respaldar.py.

A continuación cruzamos en nuestro árbol de directorio para entrar a db, y dentro debemos crear un archivo como por ejemplo cliente.ini el cual guardará la configuración del cliente que queremos respaldar :

administrador@host ~/respaldos    $ cd db
administrador@host ~/respaldos/db $ nano cliente.ini

Aquí va un ejemplo de la configuración que se puede usar, cambiar según se necesite.

host=localhost
port=3306
user=mysqldump
pass=mysqldump
db=db_crux_cliente
options=--compact --single-transaction
gzip=1

Con este archivo guardado volvemos a la terminal y hacemos una prueba para correr el software respaldar para instalar los paquetes necesarios.

administrador@host ~/respaldos/db $ python ../respaldarv2/respaldar.py

Esto nos debiera indicar la lista de módulos que faltan, con el mensaje “necesita instalar el módulo…”. Para instalar los módulos necesarios debería bastar con los siguientes comandos:

pip install --user configparser tailer datetime

Prueba

Si todo está correcto, podemos llevar a cabo una prueba de descarga de base de datos. :!: Tomar ojo que hacer este paso inicia una descarga y por tanto bloqueará equipos que estén conectados, como cajas.

administrador@host ~/respaldos/db $ python ../respaldarv2/respaldar.py cliente.ini

Si todo sale correcto debiéramos ver el proceso de descarga de la base de datos.

 0 : Configurando respaldo desde cliente.ini
 0 : Leyendo diccionario de configuración
 1 : Invocando proceso de dump...
 2 : Estado del dump...
 2 : Recibido:

['-- Dump completed on 2018-11-30 10:58:14']
 2 : Salvado como localhost:3306-db_helpcom_cliente.sql

Puesta a Punto

Creamos una siguiente tarea en el crontab del usuario:

administrador@host ~/respaldos/db $ crontab -e
PATH=/usr/local/bin:/usr/bin:/bin
50 23   * * *  cd respaldos/db && python ../respaldarv2/respaldar.py cliente.ini

Purga Viejos

Para hacer que el sistema purgue automáticamente los archivos viejos, seguimos los siguientes pasos:

1.- En el archivo cliente.ini, agregamos la siguiente variable:

purgadias=10

(Cambiar según sea necesario)

2.- Descargar el siguiente archivo como purgar.sh y dar permisos de ejecución.

#!/bin/bash
source $1
find . -type f -iname "*${db}-*.sql*" -mtime "+${purgadias}" -delete
chmod +x purgar.sh

3.- Agregar en el crontab una tarea para llamar al archivo cuando sea necesario, aquí como ejemplo todos los Martes a las 23:59.

59 23  * * 2  cd respaldos/db && ./purgar.sh cliente.ini

:!: OJO - El script corre desatendido por lo tanto no pregunta ni vigila qué archivos se van a borrar. Sólo sigue el patrón establecido en clientes.ini. Tener mucho cuidado de pegar el código y escribir el crontab tal y como se muestra en la página (menos ajustes de cada caso).