Script bash: Crear backups de todas las bases de datos

Script bash: Crear backups de todas las bases de datos.

Con un sencillo script bash, podemos crear una aplicación que nos realizara copias de seguridad de todas las bases de datos de nuestro servidor o vps.

Lo vemos.

 

Crear backups de todas las bases de datos

Creamos el archivo:

nano /root/backupdb.sh

Copia y pega lo siguiente…
#!/bin/bash
mkdir -p /home/dbbackups
path="/home/dbbackups"
today=`date +%F`
dow=`date +%a`
# List all databases in server

mysql -e "show databases" | egrep -vw "(Database|information_schema|performance_schema)" > $path/dblist.txt

rm -fv $path/dbfailed.txt
rm -fv $path/dbfailed-tmp.txt
rm -fv $path/dbfailed-mail.txt
mkdir -p $path/$dow
/usr/bin/mysqldump --events mysql > $path/$dow/mysql.sql

if [ $? -ne 0 ] ;
then
mysqlcheck -r mysql ;
/usr/bin/mysqldump --events mysql > $path/$dow/mysql.sql
if [ $? -ne 0 ] ;
then
echo "mysql" > $path/dbfailed.txt;
fi
fi

for i in `cat $path/dblist.txt` ;
do
sleep 2;
echo "Creating dbbackup of $i" ;
/usr/bin/mysqldump $i > $path/$dow/$i.sql ;
if [ $? -ne 0 ] ;
then
echo $i >> $path/dbfailed-tmp.txt;
fi;
done

if [ -f $path/dbfailed-tmp.txt ]
then

for i in `cat $path/dbfailed-tmp.txt`
do
mysqlcheck -r $i
/usr/bin/mysqldump $i > $path/$dow/$i.sql ;
if [ $? -ne 0 ] ;
then
echo $i >> $path/dbfailed.txt;
fi;
done
fi

find /home/dbbackups/* -type f -mtime +30 -exec rm -f {} \;

Guarda y cierra el archivo.

Script bash: Crear backups de todas las bases de datos 1

 

Le concedemos permisos 755.

chmod 755 /root/backupdb.sh

Para ejecutarlo de forma manual…
bash /root/backupdb.sh

 

Para ejecutarlo automáticamente mediante una tarea cron.

crontab -e

Modifica según tus necesidades…
30 1 * * 0,1,2,3,4,5,6 /root/backupdb.sh

 

Los backups de las bases de datos se han guardado en: «/home/dbbackups«.

 

Espero te resulte útil el script «Crear backups de todas las bases de datos».

 

2 Comentarios

  1. dasht
    01/11/2018

Agregar comentario