Este es un script simple de bash para copia de seguridad de bases de datos MySQL. Lo utilizamos un servidor pequeño de Linode con Ubuntu pero debería funcionar en cualquier servidor Linux.

  • XBACKUPFOLDERX: your folder without trailing and ending slashes relative to the root.
  • XUSERX: A database user with access to all your databases.
  • XPASSWORDX: The XUSERX password .
  • database1 database2 database3 ... databaseN: Your database names separated by spaces.
  • 5: The number of backups to keep per database.

Que hace el script?

  1. Mantiene hasta 5 backups para cada base de datos
  2. Los backups quedan comprimidos con gzip
  3. Mantiene un backup para hoy y 4 para días anteriores

 

Pasos para la implementación

 

 

Paso 1.

Copie el script en un archivo .sh en su sistema Linux. Asumimos cron_backupdb.sh para este ejemplo.

 

#!/bin/bash

for BDNAME in database1 database2 database3 ... databaseN
do
  rm /XBACKUPFOLDERX/${BDNAME}_`date +%Y-%m-%d`*
  mysqldump -uXUSERX -pXPASSWORDX $BDNAME|gzip > /root/_bkp/${BDNAME}_`date +%Y-%m-%d_%H`.sql.gz
  BKTAILRM=$((`ls -t /root/_bkp/${BDNAME}_*.sql*|awk -F: '{print $1}'|wc -l` - 5))
  if [ "$BKTAILRM" -gt "0" ]; then
    ls -t /XBACKUPFOLDERX/${BDNAME}_*.sql*|awk -F: '{print "rm "$1}'|tail -n $BKTAILRM|/bin/sh
  fi
done

 

Paso 2.

Permisos y crontab

 

:~# chmod u+x cron_backupdb.sh
:~# crontab -e

 

Paso 3.

Su línea de crontab. Esta línea se ejecuta cada hora, pero revise el manual de crontab para su propia configuración:

 

0 * * * * /var/root/cron_backupdb.sh