› Foros › PC › Software libre
#!/bin/bash
. /lib/lsb/init-functions
###################################################
###Script copias de seguridad Thunderbird##########
###Fecha de Creación: 23 de Julio del 2010#########
###Creado por rDcDc ###############################
###Revisado: 26 de Agost del 2010 Mcrypt###########
###################################################
### /VARIABLES/ ### OPEN ###
#Constante de control
OK=0
#Directorio padre donde se encuentra el perfil del thunderbird
LOCAL="/home/local/.thunderbird"
#Dirección de correo electrónico para enviar el log
MAIL=""
#Localización del fichero log
LOG="/home/local/log.txt"
#Directorio donde volcar la copia de seguridad, no poner el / final
EXTER=""
#Nombre del fichero comprimido que se va a crear que contiene el perfil del usuario
FILE="thunderbird.tar"
#Nombre del fichero anterior después de encriptarlo (NOTA: Este fichero debe de ser igual que el anterior pero añadiéndole el .nc"
CRYPT_FILE="thunderbird.tar.nc"
#Directorio donde se encuentra la aplicación mcrypt
MCRYPT=/usr/bin/mcrypt
#Contraseña para encriptar el fichero, (NOTA debe de terminar SIEMPRE con la retorno de carro \r
PASSWORD="\r"
#Mascara para la fecha del día de hoy
DATE=$(date +'%Y%m%d')
#Mascara para la fecha de hace 7 días
DATE_OLD=$(date --date "-7 days now" +'%Y%m%d')
### /VARIABLES/ ### CLOSED ###
### /FUNCIONES/ ### OPEN ###
function parar_thunderbird(){
#Función que para el thunderbird, esta función hace una parada indolora del thunderbird, si por algún casual el nombre de cliente thunderbird es distinto hay que modificar el ps aux | grep thunderbird por el que tengamos, IMPORTANTE: para todo proceso que contenga el nombre thunderbird por lo tanto no llamar al script thunderbird, si no se quiere para todo proceso con nombre thunderbird cambiar el grep por la ruta donde se encuentre el thunderbird, por ejemplo: /usr/bin/thunderbird
log_action_begin_msg "Parando Mozilla Thunderbird: "
STOP="Ha fallado la parada del thunderbird"
for i in `ps aux | grep thunderbird | grep -v grep | awk '{ print $2 }'`; do
kill -HUP $i;
done
if [ $? = $OK ]; then
STOP="Se ha parado el thunderbird correctamente"
fi
log_action_end_msg $?
}
function limpiar_backup(){
#Función para limpiar las copias de seguridad ya creadas, esta función elimina automáticamente la copia de seguridad creada 7 días antes, si se quiere cambiar el numero de días cambiar la configuración de la mascara $DATE_OLD, si se quiere prescindir de esta opción comentar la linea limpiar_backup en el apartado INSTRUCCIONES
CLEAN="No se ha limpiado el directorio $DATE_OLD"
log_action_begin_msg "Limpiando backups: "
rm -r $EXTER/$DATE_OLD/
if [ $? = $OK ]; then
CLEAN="Se ha limpiado el directorio $DATE_OLD"
fi
log_action_end_msg $?
}
function mcrypt_back(){
#Función para automatzar el encriptado del fichero
/usr/bin/expect - << EndMark
set timeout -1
spawn $MCRYPT $FILE
match_max 100000
expect -exact "Enter the passphrase (maximum of 512 characters)\r
Please use a combination of upper and lower case letters and numbers.\r
Enter passphrase: "
send -- $PASSWORD
expect -exact "\r\r
Enter passphrase: "
send -- $PASSWORD
expect eof
EndMark
}
function backup(){
#Función que realiza la backup, primero comprime el directorio que contiene el perfil del usuario, después crea la carpeta donde se va a mover el fichero de backup, acontinuación encripta el fichero, elimina el fichero no encriptado y mueve el fichero encriptado al directorio anteriormente creado.
BACKU="No se ha realizado la backup"
ENCRIP="No se ha encriptado el fichero"
log_action_begin_msg "Limpiando backups: "
tar cvf $FILE $LOCAL
mkdir $EXTER/$DATE
mcrypt_back
if [ $? = $OK ]; then
ENCRIP="Se ha encriptado el fichero"
fi
rm $FILE
mv $CRYPT_FILE $EXTER/$DATE
if [ $? = $OK ]; then
BACKU="Se ha realizado la backup"
fi
log_action_end_msg $?
}
function correo(){
#Función para enviar un correo con el log, para poder enviar este correo electrónico debe de estar configurado exim4 o similares para que la función mail envie correos, si se quiere prescindir de esta opción comentar la linea correo en el apartado INSTRUCCIONES
echo -e "El dia $DATE se ha realizado la backup de la siguiente forma: \n $STOP \n $CLEAN \n $ENCRIP \n $BACKU" > $LOG
mail -s "Copia de seguridad thunderbird" $MAIL < $LOG
}
### /FUNCIONES/ ### CLOSED ###
### /INSTRUCIONES/ ### OPEN ###
parar_thunderbird
limpiar_backup
backup
correo
### /INSTRUCIONES/ ### CLOSED ###