Home > how to, Mondo digitale > [Appunti] Rsync e tar – I miei script di backup

[Appunti] Rsync e tar – I miei script di backup

9 Gennaio 2011

Negli scorsi giorni ho riordinato i file sul mio laptop e ne ho approfittato per per fare un po’ di ordine pure per quanto riguarda il backup dei miei dati.

Il mio obiettivo è quello, attraverso degli script, di creare un backup incrementali della mia /home su un hard disk esterno e avere a disposizione gli archivi degli ultimi tre backup in ordine cronologico.

Gli strumenti necessari sono:
Rsync : software che sincronizza file e cartelle da una sorgente a una destinazione.
Tar : software che permette di generare dei file utili per l’archiviazione e il backup
Hard disk esterno: ho usato un hard disk esterno che ho cifrato e formattato in ext3.

La prima cosa da fare è sincronizzare la sorgente (nel mio caso /home/leo) con la cartella di destinazione (l’ho chiamata /backup_portatile)
Qui lo script:
#!/bin/sh
# rsync script per il backup di alcuni file della mia /home/leo su archie nel mio hard disk esterno

#Variabili
LOCAL=/home/leo/
REMOTE=/media/BACKUP_ESTERNO/backup_portatile
HOST=localhost
LOG=/home/leo/script_backup/log/RSYNC_backup.log
SYNCLOG=/home/leo/script_backup/log/RSYNC_backup.synclog

#Inizio log
echo $(date +”%d/%m/%Y”) | cat >> $LOG
echo $(date +”%H:%M.%S”) Inizio sincronizzazione… | cat >> $LOG

#Vai di rsync
rsync -avze –delete –exclude-from=archie_backup.lst $LOCAL $REMOTE

#Fine log
echo $(date +”%H:%M.%S”) Fine sincronizzazione! | cat >> $LOG

Oltre agli output di log, come si può notare uso rsync con le seguenti opzioni:
-a: copia ricorsivamente e conserva i permessi e le date dei file
-v: modalità verbose
-z: comprime i dati
–delete: elimina i file nella cartella di destinazione che sono stati cancellati dalla directory di sorgente
–exclude-from=archie_backup.lst esclude dalla sincronizzazione i file elencati nel file archie_backup.lst

Con questo script sincronizzo quindi /home/leo con /media/BACKUP_ESTERNO/backup_portatile
Ora che ho una copia aggiornata della mia home sull’hard disk esterno, creo un archivio di questa cartella. Per sicurezza preferisco tenere gli ultimi tre archivi, quindi nello script indico di eliminare l’archivio più vecchi.
Per far questo e per essere più ordinato, indico allo script di rinominare l’archivio nel seguente modo: backup_anno_mese_giorno_ore_minuti
Qui lo script:
#!/bin/sh
#Description: Script per la creazione di backup automatico e rimozione vecchi backup.
#Variabili
LOG=/home/leo/script_backup/log/TAR_backup.log
TARLOG=/home/leo/script_backup/log/TAR_backup.tarlog
BASE=/media/BACKUP_ESTERNO/
DIR=backup_portatile/

#Inizio log
echo $(date +”%d/%m/%Y”) | cat >> $LOG
echo $(date +”%H:%M.%S”) Inizio creazione nuovo archivio… | cat >> $LOG

#Creazione del backup
cd $BASE
tar -zcvf $(date +”backup_%y%m%d-%H%M”).tar $DIR | cat > $TARLOG

#Eliminazione backup piu’ vecchio
first=$(ls | grep tar | sort -n | head -1)
rm $first
echo $(date +”%H:%M.%S”) elimino vecchio archivio $first | cat >> $LOG

#Fine log
echo $(date +”%H:%M.%S”) fine! | cat >> $LOG

In questo caso uso tar con le seguenti opzioni:
-z: comprime il file di backup con gzip per renderlo più piccolo
-c: crea un nuovo archivio di backup
-v: modalità verbose
-f: specifica il nome dell’archivio

Grazie a questi due semplici script riesco ad avere delle copie di sicurezza dei miei dati su un hard disk esterno.

In futuro vorrei automatizzare con cron questa procedura e attraverso ssh utilizzare come destinazione dei backup il mio piccolo server.

Naturalmente suggerimenti per migliorare questi script e le mie procedure di backup sono i benvenuti:)

Categorie:how to, Mondo digitale Tag:
I commenti sono chiusi.