Una de las tareas de todo administrador de sistemas es, respaldar la informacion y las bases bases de datos. Y si le agregamos la variable “RANSOMWARE” a la formula con mucho mayor razon es nuestro deber tener respaldos los mas actualizados posible.
Ya vivi con un cliente un tema de ‘RANSOMWARE” y si es problema cuando no hay un revision de los respaldos y te das cuenta que por algo nuestro trabajo existe.
Ahora en mundo Linux/Unix por ejemplo donde tenemos sistemas tipo ERP u otros que hacen usos de bases de datos como MySQL, MariaDB, PostgreSQL y todos esos excelentes sistemas de bases de datos que ha proporcionado esa comunidad de codigo abierto que apoyo totalmente, sabemos que se tienen que respaldar.
Cual es el proceso comun de una respaldo de la base de datos a grandes razgos:
Generas un batch de respaldo de la base de datos
- Lo agregas a cron para que se ejecute en cierto hora(s) del dia y cierto dia(s) de la semana.
- El respaldo se almacena en cierto directorio del sistema.
- Se ejecuta el respaldo y toma todo el contenido del directorio donde estan los respaldos y se lo lleva a su almacenamiento para tenerlos resguardado para cuando se requiera.
- Prueba de respaldos.
En terminos basicos asi seria el proceso.
Toda esta tarea repetitiva sabemos que genera archivos, los cuales se estan continuamente almacenando en el servidor con cierta nomenclatura para no sobreescribirse, yo minimo dejo cierta cantidad de respaldos en el servidor asi los tengo a la mano ya en el almacenamiento del sistema de respaldo tengo mas dias disponibles.
Con el paso del tiempo si nos olvidamos de esa tarea podemos llegar a dejar a el servidor sin espacio, esto aplica a cualquier OS no solo Linux, me ha tocado verlo en Windows, que se olvidan que el almacenamiento es finitio no infinito y los respaldos de SQL Server se comieron todo el disco.
Por ello despues del batch que respalda la base de datos, se requiere uno que purgue los archivos y mantenga el servidor con cierta cantidad de archivos con N dias de creacion.
Entonces tendremos 2 batches en Linux, uno que respalde y otro que este purgando el directorio donde se almacenan los archivos generados.
Batch
!/bin/sh DIAS=10 cd /opt/backups find ./* -mtime +$DIAS -exec rm {} \;
La variable DIAS indica que deseamos mantener archivos con fecha de creacion menor o igual a DIAS o sea 10 en este caso, si ustedes desean mas o menos dias ajustan el valor.
Enseguida el batch se mueve a el directorio llamado:
/var/backups
Que es donde nuestros respaldos se estan almacenando.
Por ultimo se ejecuta la tarea mas importante, esta instruccion busca los archivos en el directorio y los evalua uno por uno, quien su fecha de creacion sea mayor a DIAS sera borrado.
Quiero mencionar que este batch trabaja sobre archivos, no esta hecho para borrar directorios, por que los respaldos que estoy generando son archivo no directorios para que lo tomen en cuenta, aqui les muestro un ejemplo de un directorio que lo mantengo a raya.

Por ultimo la tarea cron de este script:

En este ejemplo el batch se ejecuta todos los lunes a las 6AM y hace su tarea, nos mantiene el almacenamiento bajo control, ya no tengo que preocuparme si el respaldo va a dejarme sin espacion en disco, hablare sobre cron en un futuro no muy lejano.
Poterior a este post vendra otro donde ya hablaremos de sistemas de respaldo como bacula por ejemplo y ver como todo lo anterior es parte de un proceso mas grande ya que aqui solo deseo hablar de como poner limites a cierta informacion y no llenar los discos duros de archivos con mucho tiempo de vida como son los respaldos.
Es todo por hoy, espero que este batch les sea de utilidad tanto como lo ha sido para mi, nos vemos pronto!!!
Excelente contenido Pedro, yo lo que haría es crear un script bash similar al suyo adicionando un rsync para mandar esos repaldos a un servidor remoto en caso que el servidor local tenga un fallo crítico casi imposible de recuperar. Saludos.
LikeLike