jueves, 14 de noviembre de 2013

Restore desde linea de comandos

En mi actual trabajo, debido al gran número de aplicaciones con el que trabajamos y para que los desarrolladores dispongan de los logs de todos los entornos, centralizamos todos los logs en un servidor para su consulta. Estos se rotan diariamente y se eliminan los de +4 días.

Debido a esto son varias las ocasiones en las que nos solicitan realizar restores de ficheros de log de varios dias y de distintas aplicaciones.

Por ejemplo los logs del mes de octubre de la aplicación "SuperAppEnJava" que empiecen por logs_serv.

Para aligerar la tarea y no tener que estar abriendo cada dos por tres el interfaz de Netbackup e ir seleccionando entre los distintos directorios de los distintos servidores donde se desplegaba la aplicación, me monte un script que selecciona los ficheros a copiar con bplist y restaura con bprestore desde consola:

El script nos va solicitando los datos necesarios para la ejecución del restore, (Cliente, fecha de incio, fecha de fin, politica, un patrón de los ficheros a restaurar y el directorio destino del que colgará el restore que colgará de /backups/ en nuestro servidor de Netbackup, pero esto se puede cambiar con una pequeña modificación del script. Sustituid los campos entre llaves por los valores utilizados en vuestro sistema.
 


#!/bin/bash
#by s4b4sTI 11/2013 
#Definicion de variables 
BPLIST={path netbackup}/bplist 
BPRESTORE={path netbackup}/bprestore 
RENOMBRAR=/tmp/path_restores   RESTORES=/restores/
LOGS=/var/log/restore_log.log 
LISTA=/tmp/filelist 
DESTINO={servidor_destino} ###Comenzamos sacando la lista de los ficheros
echo "Introduce el cliente" 
read CLIENT; 
echo "Introduce fecha inicio MM/DD/AAAA" 
read INICIO; 
echo "Introduce fecha fin MM/DD/AAAA" 
read FIN; 
echo "Introduce la politica" 
read POL; 
echo "Introduce el patron de los ficheros a restaurar" 
read PATRON; 

###Imprimimos el comando por pantalla y lo ejecutamos, va bien para registrar la ejecución en algún log.
echo "bplist -R 99 -C $CLIENT -l -k $POL -s $INICIO -e $FIN -l $PATRON" 
$BPLIST -R 99 -C $CLIENT -l -k $POL -s $INICIO -e $FIN -l $PATRON | awk '{print $8}' > $FILELIST 
echo "Se restauraran los ficheros:" 
cat $LISTA; 
echo ""; 

#Pedimos confirmacion y si es correcto continuamos con el restore. 
echo "Es correcto? (y/n)" 
read OPTION;
if [ "$OPTION" == "y" ]; 
then  #Solicitamos DIRECTORIO para crear el directorio destino del restore que colgará de $RESTORES 
echo "Introduce el directorio destino"; 
read PETICION 
mkdir -p $RESTORES$PETICION 
echo "change / to $RESTORES$PETICION" > $RENOMBRAR; 

#Ejecutamos el comando con -w para que espere la finalizacion del restore antes de empaquetar y comprimir. 
echo "Restaurando..." 
$BPRESTORE -w -C $CLIENT -s $INICIO -e $FIN -D $DESTINO -L $LOGFILE -R $RENOMBRAR -f $LISTA 
#Informamos de la finalizacion del restore, empaquetamos, comprimimos y limpiamos 

echo "Restore finalizado, empaquetamos, comprimimos y limpiamos" 
tar cvf $RESTORES$PETICION.tar $RESTORES$PETICION/* 
gzip $RESTORES$PETICION.tar 
rm -rf $RESTORES$PETICION 
echo "Puede recoger su archivo en $RESTORES$PETICION.tar.gz" 
else 
echo "bye"; 
exit 0; 
fi 
#Sacabo 


Espero que os sea util!!

No hay comentarios:

Publicar un comentario