Script para copia de seguridad de thunderbird

Os dejo un script que hace una copia de seguridad del perfil de thunderbird y luego la encripta, también puede hacer copias de seguridad de una carpeta cualquiera si se configura correctamente.
#!/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 ###


Edito:

Hay que tener instalado el paquete mcrypt y expect

Adjuntos

Gracias por el script, pero creo qu es más comodo usar MozBackup que a parte de Thunderbird es compatible con:

* Firefox 1.0 - 3.6
* Sunbird 0.3 - 0.9
* Flock 1.0 - 2.6
* Postbox (Express) 1.0 - 1.1
* SeaMonkey 1.0a - 2.0
* Mozilla Suite 1.7 - 1.7.x
* Spicebird 0.4 - 0.8
* Songbird 1.0 - 1.7
* Netscape 7.x, 9.x
* Wyzo

Saludos
1 respuesta