Autor Tema: Bash Script para respaldo automáticos de base de datos  (Leído 5572 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado [VicMan]

  • Novato
  • *
  • Mensajes: 25
  • Puntuación: 0
    • Ver Perfil
Bash Script para respaldo automáticos de base de datos
« : 29 de marzo de 2008, 12:52:20 pm »
Hola!,
Este código, lo guardas con extensión .sh y lo guardas en el directorio donde te cargue los Cron de tu distribución de linux.  En Slackware se guarda en:

Diario            :    /etc/cron.daily/
Por Hora        :   /etc/cron.hourly/
Por Mes        :   /etc/cron.monthly/
Por Semana  :   /etc/cron.weekly/

El código es el siguiente:

#!/bin/bash -x
NOMBRE="Nombre General a modo informativo"  #Nombre General a modo informativo
UBD="root"                                #Nombre del usuario de la base de datos.
CBD="123456"                              #Contraseña del usuario de la BD
NBD="base_de_datos"                       #Nombre de la base de datos.
FECHA=`date '+%d-%m'`

echo "$NOMBRE" > info.txt
links -dump checkip.dyndns.org >> info.txt

rm *.sql.bz2
mysqldump -u$UBD -p$CBD $NBD > $NBD-$FECHA.sql && \
bzip2 $NBD-$FECHA.sql && \
« Última Modificación: 20 de junio de 2008, 11:20:27 am por [VicMan] »

Desconectado dzapata

  • Novato
  • *
  • Mensajes: 10
  • Puntuación: 0
    • Ver Perfil
Re: Bash Script para respaldo automáticos de base de datos
« Respuesta #1 : 30 de marzo de 2008, 04:24:08 pm »
Hola, siguiendo tu ejemplo coloco aqui un script un poco más avanzado que dependiendo de la opción que se le indique respaldará la aplicación, la bd o ambos y posteriormente procede a copiarlo via scp hacia otro equipo. El mismo se encarga de guardar los respaldos en la carpeta correspondiente al año y mes en curso, es decir, si el respaldo se efectua en marzo de 2008 se guardará en la carpeta 200803, si es en abril será 200804 y asi sucesivamente. Asi mismo,  para que se pueda copiar el respaldo hacia otro equipo via scp deben haberse configurado los equipos para tal fin (buscar en google porque es un poco largo explicarlo por acá y tampoco es la idea de este hilo).

script_respaldo:

opcion=$1
hoy=$(date --d now +%Y%m%d)         # Para concatenar con el sufijo del archivo
ruta_directorio=/var/respaldos/$(date --d now +%Y%m)   #Directorio donde se guardará el respaldo

if [ ! -d $ruta_directorio ]; then
   mkdir $ruta_directorio
fi

function respaldo_codigo {
   tar -czf $ruta_directorio/aplicacion-codigo-$hoy.tar.gz /var/www/aplicacion
   scp $ruta_directorio/aplicacion-codigo-$hoy.tar.gz @ip_maquina_remota:/respaldos/$(date --d now +%Y%m)
}

function respaldo_bd {
   mysqldump --opt --password=clave --user=usuario nombre_bd > $ruta_directorio/aplicacion-bd-$hoy
   scp $ruta_directorio/aplicacion-bd-$hoy @ip_maquina_remota:/respaldos/$(date --d now +%Y%m)
}

case $opcion in
   codigo|CODIGO)
   respaldo_codigo;;
   bd|BD)
   respaldo_bd;;
   todo|TODO)
   respaldo_codigo;
   respaldo_bd;;
   *)
   echo "Error ... opción incorrecta";;
esac

Luego quedaría planificar los días y horas en que se efectuarán de manera automática (cron) dichos respaldos.

Si alguna otra persona tiene otro script parecido lo invito a lo que publique y asi vamos viendo nuevas formas de hacer este tipo de tareas.
« Última Modificación: 30 de marzo de 2008, 04:26:36 pm por dzapata »