Mi PRIMER script en bash

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/bash
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
Obviamente 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.

Así, por ejemplo, se vería el correo de respaldo diario...


Saludos.

0 comentarios: