backup 10 minutos al día

Mira en los directorioes asignados si ha habído cambios desde la última vez, si hay algún cambio, hace el backup completo, lo encripta y lo envía a un SFTP

Si no hay cambios, envía al SFTP un archivo SINCAMBIOS vacío.

#!/bin/bash
 
#
#       FUNCIONES
#
 
function calcula_checksum() {
# calcula el SHA1 de los ficheros contenidos en el directorio pasado por parámetroe
 
        TMP=$(find "$DIR_ORIGEN/$1" -type f -print0 | xargs -0 sha1sum | sort | cut -d " " -f 1 | sha1sum)
        CHEKSUM_ACT=$(echo $TMP | cut -d " " -f1)
        unset TMP
}
 
 
#
#       VARIABLES
#
 
FICHERO="diezminutos_com"
DIR_ORIGEN="/home/diezminutos"
CHEKSUM_ACT=""
CAMBIOS="NO"
 
FECHA=`eval date +%y%m%d`
 
 
# calcula SHA1 directorios
declare -a DIRECTORIOS=("app.10minutos" "appb.10minutos" "public" "beta" "system")
 
for directorio in "${DIRECTORIOS[@]}"; do
 
        ## leer checksum anterior, si existe
        CHEKSUM_ANT=""
        if [ -e "$DIR_ORIGEN/$directorio.checksum" ]; then
                CHEKSUM_ANT=$(cat "$DIR_ORIGEN/$directorio.checksum")
        fi  
 
        calcula_checksum $directorio
 
 
        if [ "$CHEKSUM_ANT" != "$CHEKSUM_ACT" ]; then
                CAMBIOS="SI"
                echo -e "$CHEKSUM_ACT" > $DIR_ORIGEN/$directorio.checksum
        fi  
 
done
 
 
if [ "$CAMBIOS" == "SI" ]; then
        # compresi�~C
##      construir a partir de $DIRECTORIOS la cadena para pasarle a TAR los directorios de los que
##      tiene que hacer la copia
##      concatenar cadenas?
        tar zvcpf ~/$FICHERO.tar.gz ~/app.10minutos ~/appb.10minutos ~/public ~/beta ~/system ~/*.sh 
 
 
        # CRC32
        crc32 $FICHERO.tar.gz > $FECHA.crc
        CRC=`cat $FECHA.crc`
        touch $FECHA-$FICHERO.$CRC
 
        #encriptaci�~C
        gpg --trust-model always -r "Miguel Angel Torres Egea (backups)" --encrypt ~/$FICHERO.tar.gz
 
        # borrado fichero original
        rm -f ~/$FICHERO.tar.gz
        rm -f $FECHA.crc
 
        # renombrado
        mv $FICHERO.tar.gz.gpg $FECHA-$FICHERO.tar.gz.gpg
 
        # copia
        scp -i ~/.ssh/backups\@seedbox.torresegea.es $FECHA-$FICHERO.* backups@seedbox.torresegea.es:~/10minutosaldia.com
 
        # borrado fichero encriptado
        rm -f $FECHA-$FICHERO.tar.gz.gpg
        rm -f $FECHA-$FICHERO.$CRC
 
else
        touch $DIR_ORIGEN/$FECHA-SINCAMBIOS.TXT
        scp -i ~/.ssh/backups\@seedbox.torresegea.es $FECHA-SINCAMBIOS.* backups@seedbox.torresegea.es:~/10minutosaldia.com
        rm -f $DIR_ORIGEN/$FECHA-SINCAMBIOS.TXT
 
fi
  • linux/scripts/10minutos.txt
  • Darrera modificació: 10/10/2016 15:13
  • per mate