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 .
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
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.