Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- BTYPE=$1
- DEBUG=$2
- ERRCNT=0
- ERRMSG=""
- BACKOUNT=0
- #======================================== INIZIO DELLA FUNZIONE GENERICA ===================================================
- function gather {
- BACKOUNT=$(($BACKOUNT+1))
- echo " "
- echo " "
- echo "||||||> ($BACKOUNT) OPERAZIONI DI BACKUP PER $FNAME - $ENVAR <||||||"
- echo " "
- PNAME="$FNAME/$ENVAR/giornaliero/$(date +%d_%m_%Y)"
- if [ "$BTYPE" = "weekly" ]
- then
- PNAME="$FNAME/$ENVAR/settimanale/$(date +%d_%m_%Y)"
- echo "BACKUP SETTIMANALE IN CORSO..."
- mkdir -p /root/backup/old/$FNAME/$ENVAR/settimanale.old
- echo " "
- elif [ "$BTYPE" = "daily" ]
- then
- PNAME="$FNAME/$ENVAR/giornaliero/$(date +%d_%m_%Y)"
- echo "BACKUP GIORNALIERO IN CORSO..."
- echo " "
- elif [ "$BTYPE" = "monthly" ]
- then
- PNAME="$FNAME/$ENVAR/mensile/$(date +%m_%Y)"
- echo "BACKUP MENSILE IN CORSO..."
- mkdir -p /root/backup/old/$FNAME/$ENVAR/mensile.old
- echo " "
- else
- echo "NON E' STATO INSERITO UN PERIODO ACCETTABILE. SI PROCEDE CON UN BACKUP DI TIPO GIORNALIERO."
- echo " "
- fi
- mkdir -p "/root/backup/report_singoli/$PNAME"
- echo " "
- echo "PREPARO IL REPORT..."
- echo "INIZIO BACKUP PER $FNAME CON AMBIENTE $ENVAR (log in /root/backup/report_singoli/$PNAME/$FNAME.log)" >> /root/backup/report.log
- echo "PROCESSO PARTITO! ATTENDERE PREGO..."
- if [ "$DEBUG" = "debug" ]
- then
- echo "LANCIATO IN DEBUG MODE"
- echo $BTYPE
- echo $DEBUG
- else
- echo "Attendo 60 secondi prima di iniziare..."
- sleep 60
- fi
- echo "INITIALIZE" >> /root/backup/report_singoli/$PNAME/$FNAME.log
- cat /dev/null > /root/backup/report_singoli/$PNAME/$FNAME.log
- exec 3>&1
- exec 4>&2
- exec 1<&-
- exec 2<&-
- exec 1<>/root/backup/report_singoli/$PNAME/$FNAME.log
- exec 2>&1
- echo " "
- echo "=================================================***************=============================================="
- echo " "
- echo "BACKUP AVVIATO IN DATA:"
- echo date
- echo " "
- echo "||| ENVIRONMENT $FNAME - BACKUP IN CORSO |||"
- echo " "
- echo "STO PREPARANDO LE CARTELLE PER $FNAME"
- echo " "
- echo "mkdir -p /root/backup/$PNAME/"
- mkdir -p "/root/backup/$PNAME/"
- if [ $BTYPE = "monthly" ]
- then
- rsync -a /root/backup/$FNAME/$ENVAR/mensile/* /root/backup/old/$FNAME/$ENVAR/mensile.old/
- rm -rf /root/backup/$FNAME/$ENVAR/mensile/*
- elif [ $BTYPE = "weekly" ]
- then
- rsync -a /root/backup/$FNAME/$ENVAR/settimanale/* /root/backup/old/$FNAME/$ENVAR/settimanale.old/
- rm -rf /root/backup/$FNAME/$ENVAR/settimanale/*
- else
- #implementa rotazione settimanale
- sleep 1s
- fi
- mkdir -p "/root/backup/$PNAME/"
- echo " "
- # SCRIPT DI BACKUP - FTPS GATHERING - PROVA 1
- echo " "
- echo ">>> BACKUP PARTITO! <<<"
- echo " "
- echo "SPOSTAMENTO DEI BACKUP PRECEDENTI..."
- echo " "
- echo "AVVIO DEI PROCESSI CURL..."
- echo " "
- if [ $ENVAR == "postgres" ] #siamo in ambiente postgres e mirror la directory
- then
- echo "VERIFICO LE DIMENSIONI DELLA CARTELLA REMOTA:"
- mkdir /root/fs
- /usr/local/bin/curlftpfs ftp://jelastic-ftp:fQ71j6yoNG@37.218.249.180/ /root/fs
- du -ksh /root/fs/backup | awk 'BEGIN{FS=" "} {print $1}'
- du -ksh /root/fs/backup | awk 'BEGIN{FS=" "} {print $1}' > /root/backup/$PNAME/$FNAME.check
- umount /root/fs/
- rm -rf /root/fs
- echo "DOWNLOAD DI: wget -N -q -nv -m ftp://$FUSER:$FPASSWORD@$FIP$BPATH -P /root/backup/$PNAME"
- echo ""
- echo " "
- wget -N -q -nv -m ftp://$FUSER:$FPASSWORD@$FIP$BPATH -P /root/backup/$PNAME
- else #siamo in ambiente tomcat e scarico file apposito
- echo "DOWNLOAD DI: curl --user $FUSER:$FPASSWORD ftp://$FIP$BPATH -o /root/backup/$PNAME/$FNAME.$EXT"
- echo ""
- echo " "
- curl --user $FUSER:$FPASSWORD ftp://$FIP$BPATH -o /root/backup/$PNAME/$FNAME.$EXT
- fi #(DECOMMENTARE QUANDO IMPLEMENTI L'OPZIONE SOTTO DEL CHECK DI CONSISTENZA ANCHE PER POSTGRES)
- # CHECK COMPARISON
- echo " "
- echo "AVVIO DEL CONFRONTO DEI FILES..."
- echo " "
- echo "GENERO UN CHECK DEL BACKUP SCARICATO E, NEL CASO, SCARICO QUELLO REMOTO:"
- cat /dev/null > /root/backup/$PNAME/local.check
- # aggiungendo nello script quel controllo delle dimensioni, accorciare
- # l'if $ENVAR precedente (il maxiblocco) (ricorda il fi in fondo)(CON IL DECOMMENTO DI fi SOPRA)
- # e giocare con:
- #
- if [ $ENVAR == "postgres" ]
- then
- echo "GENERO LA DIMENSIONE LOCALE:"
- echo "du -ksh /root/backup/$PNAME | awk 'BEGIN{FS=" "} {print $1}' >> /root/backup/$PNAME/local.check"
- du -ksh /root/backup/$PNAME | awk 'BEGIN{FS=" "} {print $1}' >> /root/backup/$PNAME/local.check
- else
- echo "DOWNLOAD DELL'HASH MD5:"
- echo "curl --user $FUSER:$FPASSWORD ftp://$FIP$PATHSUM -o /root/backup/$PNAME/$FNAME.check"
- curl --user $FUSER:$FPASSWORD ftp://$FIP$PATHSUM -o /root/backup/$PNAME/$FNAME.check
- echo " "
- echo "GENERO L'MD5 LOCALE:"
- md5sum /root/backup/$PNAME/$FNAME.$EXT | awk '{ print $1 }' >> /root/backup/$PNAME/local.check
- fi
- echo " "
- echo "LOCAL CHECK:"
- cat "/root/backup/$PNAME/local.check"
- echo " "
- echo "CONFRONTO CON QUELLO GENERATO DALL'ENV:"
- cat "/root/backup/$PNAME/$FNAME.check"
- echo " "
- if cmp -s "/root/backup/$PNAME/local.check" "/root/backup/$PNAME/$FNAME.check"
- then
- echo "Check verificato con successo!"
- echo "Download del backup di $FNAME ambiente $ENVAR effettuato correttamente e verificato!" >&3
- echo " "
- # echo "Avvio la cancellazione dei backup remoti..."
- # echo " "
- # DELBPATH=$(echo $BPATH | sed -r 's/^.{2}//')
- # DELSUMPATH=$(echo $PATHSUM | sed -r 's/^.{2}//')
- # echo $DELBPATH
- # echo $DELSUMPATH
- # echo " "
- # echo "curl --user $FUSER:$FPASSWORD ftp://$FIP$BPATH -Q 'DELE $DELBPATH'"
- echo " "
- # echo "curl --user $FUSER:$FPASSWORD ftp://$FIP$PATHSUM -Q 'DELE $DELSUMPATH'"
- echo " "
- # curl --user $FUSER:$FPASSWORD ftp://$FIP$BPATH -Q "DELE $DELBPATH"
- # curl --user $FUSER:$FPASSWORD ftp://$FIP$PATHSUM -Q "DELE $DELSUMPATH"
- if [ $BTYPE = "monthly" ]
- then
- rm -rf /root/backup/old/$FNAME/$ENVAR/mensile.old
- elif [ $BTYPE = "weekly" ]
- then
- rm -rf /root/backup/old/$FNAME/$ENVAR/settimanale.old
- else
- HOWMANY=$(ls -l /root/backup/$FNAME/$ENVAR/giornaliero/ | grep "^d" | wc -l)
- echo " "
- echo "==================="
- echo " "
- echo "NELLA CARTELLA '$FNAME/$ENVAR/giornaliero' sono presenti $HOWMANY backup, "
- if [ $HOWMANY -eq 7 ]
- then
- echo "PERTANTO, HO CANCELLATO IL BACKUP MENO RECENTE."
- echo " "
- rm -rf %q "$(find /root/backup/$FNAME/$ENVAR/giornaliero/* -type d -printf "%T+ %p\0" | tr '\0\n' '\n\0' | sort | head -n 1 | tr '\0\n' '\n\0' | sed -e 's/^[^ ]\+ //')"
- else
- echo "DUNQUE, NESSUNA ROTAZIONE DI BACKUP E' RICHIESTA."
- echo " "
- fi
- sleep 1s
- fi
- else
- if [ $BTYPE = "monthly" ]
- then
- rsync -a /root/backup/old/$FNAME/$ENVAR/mensile.old/ /root/backup/$FNAME/$ENVAR/mensile/
- rm -rf /root/backup/old/$FNAME/$ENVAR/mensile.old
- elif [ $BTYPE = "weekly" ]
- then
- rsync -a /root/backup/old/$FNAME/$ENVAR/settimanale.old/ /root/backup/$FNAME/$ENVAR/settimanale/
- rm -rf /root/backup/old/$FNAME/$ENVAR/settimanale.old
- else
- sleep 1s
- fi
- echo "ATTENZIONE! Controllo integrita' fallito! Controllare il backup per eventuali errori!"
- echo "ATTENZIONE! Il processo ha rilevato un download non corretto dei dati! Vedere il log di $FNAME $ENVAR per ulteriori dettagli." >&3
- ERRCNT=$(($ERRCNT + 1))
- ERRMSG="$ERRMSG || $FNAME - $ENVAR"
- fi
- echo " "
- cat /root/backup/report_singoli/$PNAME/$FNAME.log >> /root/backup/report.log
- rm -rf /root/backup/$PNAME/$FNAME.check
- echo " " >&3
- echo "=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=" >&3
- echo " " >&3
- echo "PROCESSO COMPLETATO PER $FNAME, INFORMAZIONI SALVATE NEL LOG COMUNE (/root/backup/report.log) E NEL LOG SPECIFICO." >&3
- echo " "
- #=========================== INIZIO RESET DESCRIPTOR =====================
- echo " "
- echo "RESET DEI DESCRIPTOR..."
- exec 1<&3
- exec 2<&4
- sleep 1s
- echo " "
- echo " ()()()()()()()()()()()()()"
- echo " "
- echo " ESCO DALLA FUNZIONE E VEDO SE DEVO FARE ALTRI BACKUP..."
- echo " "
- echo " ()()()()()()()()()()()()()"
- echo " "
- sleep 2s
- }
- #================================================== FINE DELLA FUNZIONE GENERICA: DA QUI IN POI AGGIUNGERE GLI ENV E CHIAMARE gather ===================================================================
- #
- #
- # ISTRUZIONI
- #
- # Per aggiungere un ambiente alla lista dei backup da prendere, compilare le variabili sottostanti a seconda dell'ambiente in questione.
- # EXT indica il formato in cui è memorizzato il file di backup, che a seconda dell'environment (ENVAR) saranno, normalmente, sql per postgres e ar.gz per tomcat.
- # NOTA BENE: affinchèlo script funzioni è necesario che sull'ambiente (environment) sia configurato un backup sulla cartella backup/ accessibile direttamente dall'FTP con il nome specificato
- # in FNAME e contenuto anche nelle altre variabili (PATHSUM, BPATH). Inoltre, se sull'environment non è impostato il controllo md5 delbackup, lo script funzionera' comunque
- # ma riportera' errori, poichènon può controllare l'esito del downloa
- #
- # IMPORTANTE: Per gli ambienti PostgreSQL EXT è da tenre vuoto ("") e PATHSUM è irrilevant!
- #
- #=======================================================================================================================================================================================================
- # BACKUP PostgreSQL AdEPP e Comtrapani TOMCAT
- ENVAR="postgres"
- EXT=""
- FNAME="AdEPP8"
- FUSER="jelastic-ftp"
- FPASSWORD="fQ71j6yoNG"
- FIP=37.218.249.180
- BPATH="/backup/"
- PATHSUM="none"
- gather
- ENVAR="tomcat"
- EXT=".tar.gz"
- FNAME="AdEPP8"
- FUSER="jelastic-ftp"
- FPASSWORD="YyGZwN82Eh"
- FIP=37.218.249.182
- BPATH=":/backup/tomcat.tar.gz"
- PATHSUM=":/backup/tomcat.md5"
- gather
- # BACKUP altroserver
- # ENVAR="tomcat/postgres"
- # EXT="sql/tar.gz/.."
- # FNAME="[NOME DELL'ENV]"
- # FUSER="jelastic-ftp"
- # FPASSWORD="[PASSWORD FTP]"
- # FIP=[INDIRIZZO IP DELL'ENV]
- # BPATH=":/backup/[NOMEFILE]"
- # PATHSUM=":/backup/[NOMEFIRMA].md5"
- # gather
- #ENVAR="postgres"
- #EXT="sql.gz"
- #FNAME="arcasud"
- #FUSER="jelastic-ftp"
- #FPASSWORD="jwfvLCEEwr"
- #FIP=37.218.248.24
- #BPATH=":/backup/backup1.sql.gz"
- #PATHSUM=":/backup/arcasud.md5"
- #gather
- #ENVAR="postgres"
- #EXT="sql.gz"
- #FNAME="appalti_temp1"
- #FUSER="jelastic-ftp"
- #FPASSWORD="D7PUoK3EXp"
- #FIP=37.218.249.53
- #BPATH=":/backup/backup1.sql.gz"
- #PATHSUM=":/backup/appalti_temp1.md5"
- #gather
- echo " "
- echo " "
- echo " "
- echo " "
- echo " NIENTE DA FARE, FINITO!"
- echo " "
- echo "-----------------------"
- echo " "
- echo "EFFETTUATE $BACKOUNT OPERAZIONI DI BACKUP"
- echo " "
- echo "=== REPORT ERRORI === "
- echo "Numero di errori: $ERRCNT"
- echo "La variabile errori riporta: $ERRMSG"
- sleep 3s
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement