Cifrar backup de mysql con gpg y enviarlo por correo
RECORDATORIO
Esto es el típico recordatorio, una anotación en un papel que siempre extravías.
Fuera de su contexto puede no tener ningún sentido.
10/11/2014
Contents
Cifrar backup de mysql con gpg y enviarlo por correo
Si no disponemos de un lugar adecuado donde almacenar el backup de BBDD, y la base de datos no es muy grande, podemos utilizar el correo para este fin. Como el correo no siempre viaja cifrado, el cifrado se convierte en una necesidad.
Herramientas utilizadas
- mime-tool - Parte del proyecto Topal. Se utiliza para enviar el fichero con el backup. Hay múltiples alternativas que se pueden utiliar en su lugar
- gnupg - El software de cifrado.
- mysql - La base de datos utilizada.
El script que realiza el trabajo
#!/bin/sh USER=Usuario_BBDD BBDD=La_BBDD P=La_Password_de_la_BBDD DIR=/srv/backup # Directorio donde se almacenen los backups BACKUP_FILE=BBDD-$BBDD-$(date '+%d%m%Y').sql.gz MAIL=foo@email.foo FROM=foo@localhost.foo ADMIN_MAIL=foo@otroemail.foo SUBJECT="Backup - $BACKUP_FILE" /usr/bin/mysqldump -u $USER --password=$P $BBDD -c | /bin/gzip -9 > $DIR/$BACKUP_FILE ERROR=$? if [ ${ERROR} -eq 0 ];then gpg -a --encrypt --trusted-key A2EE9DF178180EF1 -r $MAIL $DIR/$BACKUP_FILE ERROR=$? fi if [ $ERROR -ne 0 ];then # Si se produce algún error echo -e "From: $ADMIN_MAIL\nSubject: Error $ERROR en Backup $BACKUP_FILE\n\nError $ERROR en Backup $BACKUP_FILE" | /usr/sbin/sendmail -f $FROM $ADMIN_MAIL else # Si todo va bien mime-tool -S "$SUBJECT" -F $FROM $DIR/$BACKUP_FILE.asc | /usr/sbin/sendmail -f $FROM $MAIL rm $DIR/$BACKUP_FILE.* fi
gpg
- gpg -a --encrypt --trusted-key A2EE9DF178180EF1
Ésta opción nos permite cifrar el correo con una clave, aunque ésta no esté firmada, o lo que es lo mismo, que no se considere confiable. Para saber cual es es trusted-key de una clave se puede utilizar:
gpg --list-keys --with-colon