No es nada espectacular, ni muy optimizado, basicamente, es para respaldar los archivos de configuracion de los servicios mas importantes que uso en mi trabajo, los comprime en 7z (muy buen formato), y los recibo en mi correo, al cual para más orden le aplico un filtro. Cualquier duda o sugerencia para mejorar el código o funcionalidad es bien leída.
#!/bin/bashObviamente hay que agregar este script en el crontab para que se ejecute cuando estimes necesario, yo lo hago todos los días a las 23:50 Hrs.
clear
#DECLARACION DE VARIABLES
admin="Carlos Garrido G."
fecha="`date +%Y%m%d`"
hora="`date +%H:%M:%S`"
respaldos="/opt/respaldos"
script="/opt/scripts/respaldo_diario.sh"
r_squid="/etc/squid"
r_firewall="/etc/init.d"
r_paginas="/home/kto"
correo="micorreo@gmail.com"
archivo="Respaldo$fecha.tar"
adjunto="$archivo.7z"
fecha_email="`date +%A` `date +%d` de `date +%B` del `date +%Y`"
mensaje="Este correo se ha generado automaticamente el día $fecha_email a las $hora Hrs. Gracias a un script escrito por $admin. Archivos: `ls $respaldos/$fecha*`"
fecha_as="`date +%Y/%m/%d`"
asunto="PROXY1 $fecha_as $hora"
#***COPIAS DE RESPALDO DIARIO LOCAL***
echo "[`date +%H:%M:%S`]Realizando respado local..."
#CONFIGURACION DE RED
cp /etc/network/interfaces $respaldos/$fecha-interfaces
#CONFIGURACION SQUID
cp $r_squid/squid.conf $respaldos/$fecha-squid.conf
#CONFIGURACION SAMBA
cp /etc/samba/smb.conf $respaldos/$fecha-smb.conf
#CONFIGURACION FIREWALL
cp $r_firewall/firewall.sh $respaldos/$fecha-firewall.sh
#PAGINAS BLOQUEADAS
cp $r_paginas/sitiosdenegadoslab1 $respaldos/$fecha-sitiosdenegadoslab1
cp $r_paginas/sitiosdenegadoslab2 $respaldos/$fecha-sitiosdenegadoslab2
#ESTE MISMO SCRIPT
cp $script $respaldos/$fecha-script_backup.sh
#***COPIAS DE RESPALDO DIARIO A CORREO***
#echo "[`date +%H:%M:%S`]Realizando respado remoto (e-mail)..."
#echo "[`date +%H:%M:%S`]Empaquetando y comprimiendo..."
#tar -cvf $archivo $respaldos/$fecha* p7zip $archivo
#echo "$mensaje" | mutt -s "$asunto" -a $adjunto $correo && echo "[$hora]El archivo $adjunto ha sido enviado correctamente"
#RESPALDO MENSUAL Y DIARIO
hoy="`date +%m`"
manana="`date -d "tomorrow" +%m`"
nmes="`date +%m -d "+15 days"`"
#RESPALDO DIARIO
echo "[`date +%H:%M:%S`]Creando Respaldo Diario..."
tar -cvf $respaldos/$archivo $respaldos/$fecha* >tar.log
p7zip $respaldos/$archivo >7z.log
echo "[`date +%H:%M:%S`]Enviando respaldo diario en el archivo $adjunto al $correo ..."
echo "$mensaje" | mutt -s "RESPALDO DIARIO: $asunto" -a $respaldos/$adjunto $correo && echo "[$hora]El archivo $adjunto ha sido enviado correctamente"
echo "[`date +%H:%M:%S`]Bye."
#RESPALDO MENSUAL
if [ $hoy -ne $manana ]; then
echo "[`date +%H:%M:%S`]Creando Respaldo Mensual..."
tar -cvf $respaldos/RespaldoMes-`date +%B-%Y`.tar $respaldos/`date +%Y%m`* >tar.log
p7zip $respaldos/RespaldoMes-`date +%B-%Y`.tar >7z.log
echo "[`date +%H:%M:%S`]Enviando Respaldo Mensual en el archivo RespaldoMes-`date +%B-%Y`.tar.7z al $correo ..."
echo "$mensaje" | mutt -s "RESPALDO MENSUAL: $asunto" -a $respaldos/RespaldoMes-`date +%B-%Y`.tar.7z $correo && echo "[$hora]El archivo $adjunto ha sido enviado correctamente"
echo "[`date +%H:%M:%S`]Bye."
else echo "[`date +%H:%M:%S`]Todavia estamos en el mismo mes, no se hace respaldo mensual"
fi
sabado="`date +%u`"
#RESPALDO SEMANAL
semana="Semana`date +%d%m%Y -d "-5 days"`-`date +%d%m%Y`"
dia_semana="`date +%Y%m%d`"
if [ 6 -eq $sabado ]; then
echo "[`date +%H:%M:%S`]Creando Respaldo Semanal..."
mkdir $respaldos/$semana
#JUNTANDO LOS ARCHIVOS DE LA SEMANA
cp $respaldos/`date +%Y%m%d -d "-5 days"`* $respaldos/$semana
cp $respaldos/`date +%Y%m%d -d "-4 days"`* $respaldos/$semana
cp $respaldos/`date +%Y%m%d -d "-3 days"`* $respaldos/$semana
cp $respaldos/`date +%Y%m%d -d "-2 days"`* $respaldos/$semana
cp $respaldos/`date +%Y%m%d -d "-1 days"`* $respaldos/$semana
cp $respaldos/`date +%Y%m%d -d "-0 days"`* $respaldos/$semana
#EMPAQUETANDO LOS DIAS QUE CORRESPONDEN
tar -cvf $respaldos/Respaldo$semana.tar $respaldos/$semana >tar.log
p7zip $respaldos/Respaldo$semana.tar >7z.log
echo "[`date +%H:%M:%S`]Enviando Respaldo Semanal en el archivo Respaldo$semana.tar.7z al $correo ..."
echo "$mensaje" | mutt -s "RESPALDO SEMANAL: $asunto" -a $respaldos/Respaldo$semana.tar.7z $correo && echo "[$hora]El archivo se ha enviado correctamente"
echo "[`date +%H:%M:%S`]Bye."
else
echo "[`date +%H:%M:%S`]Hoy no es na sabado pu, no se hace respaldo semanal"
echo "[`date +%H:%M:%S`]Bye."
fi
Así, por ejemplo, se vería el correo de respaldo diario...
Saludos.
0 comentarios:
Publicar un comentario