IngDiaz

Respaldo de todas las bases de datos del servidor MySQL en un solo script – Bash

¡Hola a todos! El siguiente script bash lo que pretende es realizar un respaldo de todas las bases de datos del servidor MySQL (GNU/Linux por supuesto) en un solo script y sin mucha complicación; lo que hace es verificar el número de bases de datos que tiene y, con base en éste dato, se crea un bucle para ir respaldando base de datos por base de datos. Lo bonito del script es que de una vez se va comprimiendo el respaldo y luego se transfiere a su destino (otro servidor, recurso compartido, etc.).

Sí, sé que es un script sencillo que se puede realizar desde cero con un poco de tiempo, pero hay pequeños detalles que se olvidan y pues me servirá a mí más que todo como un recordatorio de cómo se hace y no perder el tiempo en hacerlo de cero.

Explico cada parte mediante los colores:

[client]
user=root
password=Mi_Clave2
host=localhost
username=administrador
password=Mi_Clave3
domain=ingdiaz.org

A continuación, el contenido del script:

#!/bin/bash
fecha=$( date +%Y%m%d-%H%M%S )
mysql -u usuario --password="Mi Clave" -B -N -e 'show databases' | while read db; do
    echo "Respaldando ${db}..."
    mysqldump --defaults-extra-file=/home/usuario/auth-mysql.cnf --lock-tables=false ${db} | gzip -c -9 > /opt/backup/bd-${db}-${fecha}.gz
    echo "Enviando a recurso compartido"
    smbclient //servidor1/respaldos -A /home/usuario/auth-samba.txt -c 'put /opt/backup/bd-'${db}'-'${fecha}'.gz bd-'${db}'-'${fecha}'.gz'
    #scp -u usuario -pMiClave '/opt/backup/mibase-'${db}'-'${fecha}'.gz' usuario2@server2://tmp
done
rm /opt/backup/*
exit 0

También dejé «comentareado» la forma de copiar éste respaldo mediante scp , si digamos se quiera guardar en un servidor GNU/Linux.

¡Saludos!

Comentarios por Facebook

comentarios