Hoy me encontré con un pequeño código de un script en bash que nos permite crear un backup o copia de seguridad de la base de datos en el disco. Al mismo tiempo comprimiremos el backup e iremos eliminando aquellas copias de seguridad cuya antigüedad sea superior a 30 días.
Lo bueno de este script es que podemos usarlo a través de un cronjob para hacer backups diarias, semanales o según nuestras necesidades. También es recomendable ajustar correctamente los permisos de este script ya que se almacenan las credenciales para la autenticación en la base de datos.
Ejemplo de script en bash para crear un backup comprimido de una base de datos MySQL/MariaDB.
Vemos que la herramienta usada para crear la copia de seguridad de la base de datos es mysqldump
, por lo que no debería de haber problemas al manejar bases de datos de tamaños grandes.
#!/bin/bash
# Credenciales de la base de datos
user='usuario'
password='contraseña'
host='localhost'
db_name='base_datos'
# definimos las variables del path y la fecha
backup_path='/backup'
date=$(date +"%d-%b-%Y")
# Establecemos los permisos predeterminados
umask 177
# Dump de la base de datos
mysqldump –user=$user –password=$password –host=$host $db_name > $backup_path/$db_name-$date.sql
#Comprimir backup
xz -9 $backup_path/$db_name-$date.sql
# Eliminar archivos de más de 30 días
find $backup_path/* -mtime +30 -exec rm {} \;
Para conocer mejor la herramienta mysqldump
, recomiendo pasarse por el tutorial que ya escribimos hace algún tiempo en el blog de cómo hacer un backup de la base de datos WordPress con SSH. En este tutorial muestro algunas consideraciones a tener en cuenta y datos extra que nos ayudarán a ampliar nuestros conocimientos.
Por último, decir que el código del script es muy sencillo y podemos adaptarlo nuestras necesidades, por lo que no dudes en enviarnos tu versión modificada.