Respaldar bases de datos Mysql directamente a FTP ( Script )

Hoy he tenido que hacer un scritp que lo dejo aquí.

– Básicamente saca todas las bases de datos de mysql, las comprime y las envia al FTP que le asignes
– Es necesario por seguridad y simplemente comodidad tener creado un .my.cnf así se puede usar con root, admin, con cualquier usuario que se ejecute que tenga el .my.cnf creado y con eso es suficiente para conectar al mysql.

Aquí dejo el script que seguro a alguien le servirá:

#!/bin/bash
# Se distribuye sin ninguna garantia
# Autor Maks Skamasle
# Twitter @skamasle
bk_host=host
bk_ftp_user=
bk_ftp_pass=
bk_ftp_port=21
bk_ftp_path=/backup
log=~/tmp/bk.log
DATE=$(date)
# Mysql Connect
# We wait .my.cnf for connection this do it compatible whit any system easy
# More secure and not need your password here
if [ ! -d ~/tmp ];then
mkdir ~/tmp
fi
cd ~/tmp
databases=$(echo "show databases;" | mysql |grep -v performance_schema |grep -v information_schema |grep -v Database)
for bd in $databases
do
DATE=$(date)
echo "Respaldando $bd -- $DATE" >> $log
mysqldump $bd --ignore-table=$bd.wp_wfHoover --ignore-table=$bd.wp_wfNet404s --ignore-table=$bd.wp_wfVulnScanners > $bd.sql || rm -f $bd.sql
if [ -e $bd.sql ];then
echo "Comprimiendo $bd" >> $log
gzip $bd.sql
echo "Transfiriendo $bd" >> $log
/usr/bin/lftp -c "open -u $bk_ftp_user,$bk_ftp_pass ftp://$bk_host -p $bk_ftp_port; put -O $bk_ftp_path $bd.sql.gz " >> log
rm -f $bd.sql.gz
else
echo "BD $bd no se a podido respaldar -- $DATE " >> ~/MYSQLDUMP-ERROR.log
echo "Error al Respaldar $bd" >> $log
fi
done
exit 0
Maks Skamasle (123 Posts)

Maks Skamasle, sysadmin, fotógrafo aficionado y me gusta el tomar té por las madrugadas cuando no hay ruido ni sol.