Barra laterale

sistema:script_grafico_per_backup_con_rsync_via_ftp

Script grafico per backup con rsync via ftp

Autore: Fabio Di Matteo
Ultima revisione: 2/2/2011

(parte in awk scritta da Florian Purucker e Crowdway )

Andremo a realizzare uno script che fara' il backup incrementale su un qualunque spazio FTP grazie a rsync e curlftpfs. Dato che rsync non supporta tale protocollo monteremo prima di tutto una cartella ftp grazie a curlftpfs e poi grazie a rsync faremo il nostro backup sulla cartella ftp appena montata. Per rispolverare l'uso di curlftpfs e rsync potrebbe essere utile dare uno sguardo ai seguenti articoli : Montare un filesystem FTP con curlftpfs, Script per il backup sicuro tramite Rsync e Openssh .

Lo script

Per fare funzionare lo script basta dare i permessi di esecuzione al file e cambiare in base alle nostre esigenze le seguenti righe:

#-------------------------------------------------------
SRC=$HOME/Documenti/tesi
DEST=$HOME/backup
FTPURL=ftp://utente:password@mio.hostftp.net/backup
BROWSER=chromium-browser

LOGFILE=$HOME/backup.log
RSYNCTMP=/tmp/rsync
#------------------------------------------------------

miobackup.sh

#       miobackup.sh
#       
#       Copyright 2011 Fabio DM <pobfdm@gmail.com>, 
# 		
#	Thanx to Crowdway and Florian Purucker 
# 	( http://blog.crowdway.com/2008/12/24/zenity-rsync-and-awk/ )
 
 
 
 
#Cambiare questi parametri in base alle proprie esigenze
#-------------------------------------------------------
SRC=$HOME/Documenti/tesi
DEST=$HOME/backup
FTPURL=ftp://utente:password@mio.hostftp.net/backup
BROWSER=chromium-browser
 
LOGFILE=$HOME/backup.log
RSYNCTMP=/tmp/rsync
#------------------------------------------------------
 
 
#Verifico le dipendenze
 
zenity -h >/dev/null; 
if  [ "$?" != "0" ]; then
	echo "Installare zenity per favore." 
	exit -1
fi
 
rsync --version  >/dev/null; 
if  [ "$?" != "0" ]; then
	zenity --error --text "Rsync non installato." 
	exit -1
fi
 
 
 
 
#Setto la directory dello scrip come directory corrente di lavoro
cd `dirname $0`
 
#Creo una directory temporanea per far lavorare rsync in remoto
mkdir $RSYNCTMP >/dev/null
 
# Chiede conferma prima di continuare lo script    
zenity --question --text  "Vuoi avviare il backup?"
if  [ "$?" != "0" ] ; then
	exit 0
fi
 
 
#Smontiamo il dispositivo remoto 
fusermount -u $DEST
 
#Proviamo a montare la cartella FTP e in caso di fallimento riportiamo
#un messaggio
curlftpfs -o allow_other,rw $FTPURL  $DEST 2> $HOME/curlftpfs-error.log
if [ "$?" != "0" ]; then
	zenity --error --text "Errore nella connessione all' host"
	zenity --width=400 --height=300  --title="Si sono verificati i seguenti errori:"  \
		--text-info --filename=$HOME/curlftpfs-error.log
	exit -1 ;
fi
 
 
#Mi serve un file con uno script awk per fare il parsing si rsync sulla progressbar 
echo '{
   if (index($0, "to-check=") > 0)
   {
	split($0, pieces, "to-check=")
	split(pieces[2], term, ")");
	split(term[1], division, "/");
	print (1-(division[1]/division[2]))*100"%"
   }
   else
   {
	print "#"$0;
   }
   fflush();
}' >/tmp/rsync.awk 
 
 
#Procediamo con il backup e catturiamo l'output per la progressbar
rsync -av --no-owner --no-group --temp-dir=/tmp/rsync --log-file=$LOGFILE --progress $SRC $DEST | awk -f /tmp/rsync.awk |
   zenity --progress --title "Backing up" --text="Scanning..." --percentage=0 --auto-kill --auto-close 
 
#Catturiamo eventuali errori
if [ "$?" != "0" ]; then
	zenity --error --text "Errore durante il backup"
	zenity --width=400 --height=300  --title="Si sono verificati i seguenti errori:"  \
		--text-info --filename=$HOME/rsync-error.log
	exit -1 ;
fi
 
 
 
#Mostriamo il log del backup
zenity --width=700 --height=500  --title="Ricevuta del backup"  --text-info --filename=$LOGFILE
 
# Alla fine ci viene chiesto se vogliamo visualizzare i file     
if zenity --question --text  "Vuoi visualizzare i file?" ; then
	$BROWSER $FTPURL
fi
 
#Smontiamo il dispositivo remoto 
fusermount -u $DEST
#Cancelliamo un po' di file non piu' necessari
rm $HOME/curlftpfs-error.log $LOGFILE /tmp/rsync.awk

sistema/script_grafico_per_backup_con_rsync_via_ftp.txt · Ultima modifica: 18/04/2018 - 15:50 (modifica esterna)