sebb.info
"Write programs that handle text streams, because that is the universal interface."
Creadores del sistema Unix.



> Respaldo automatizado de bases de datos.
  Cómo respaldar una base de datos mysql de manera automática, comprimirla y enviar por correo desde un servidor linux usando sólo la línea de comandos.

  Pliegue de condiciones:
  1. Ha de ser automático y programable
  2. Tienen que comprimirse los datos
  3. Los datos tienen que estar encriptados
  4. Necesita recibirse por correo electrónico

  Propuesta:
  1. Cron da total control sobre la automatización de tareas
  2. Usar zip porque se encuentra en linux y es el formato más común
  3. Zip admite una contraseña
  4. Se enviará con el comando mail, usando uuencode o directamente con uuenview

  Realización:
  A- El script CopiaSeg.sh
Se crea un script como sigue. El script reside en un lugar seguro, como el directorio /root si tenemos acceso, o en un directorio que no sea público o que esté protegido por contraseña.
#!/bin/bash

# Nombre del archivo, con fecha
archivo=Seg_BD_mysql.`date +%d-%m-%y_%H:%M`.zip

#Respaldo de la base de datos mysql y compresión máxima
mysqldump -unombre_usuario -pcontraseña --databases base_de_datos | \
zip -q -9 -P UnacontraSeÑa $archivo -

# Encodificar con uuencode o con uuenview y enviar por mail
uuenview -v -m "usuario1@server.com,usuario2@server.com" \
-f "mimail@miservidor.com" -r "mimail@miservidor.com" $archivo

# Borrar el archivo temporal
rm -f $archivo

# # FIN # #

  B- Cron
Aquí preparamos cron para correr el respaldo cada mañana a las 7H de lunes a viernes, llueva o haga sol.

Se editan los crontabs con:
crontab -e

Y se añade:
0 7 * * 1-5 /home/miweb/public_html/scripts/CopiaSeg.sh
^ ^      ^
| |      |______ De lunes a viernes. 7 es Domingo; el guión permite expresar listas.
| |_____________ 7 Horas.
|_______________ 0 Minutos.

También se puede hacer con la siguiente línea de comandos:
( crontab -l ; echo "0 7 * * 1-5 /home/miweb/public_html/scripts/CopiaSeg.sh" ) | crontab -


  C- Restaurar la Base de Datos
Entramos en el sistema donde han de estar los datos, por ejemplo con ssh y escribimos:
#unzip -P UnacontraSeÑa -p bd.sql.zip | mysql -h 'localhost' -unombre_usuario -pcontraseña --database base_de_datos

Primera publicación: 12 de Abril del 2007. Última actualización: 28 de Abril del 2007
El HTML40 cumple con las normas W3   La hoja de estilo CSS cumple con las normas W3