Backup con rsync su un disco esterno USB
Questo script, se opportunamente adattato al proprio ambiente di lavoro, può essere utile per effettuare il backup su un disco esterno USB (o su un altro dispositivo). Lo script oltre ad effettuare il backup incrementale con rsync verifica che il disco USB sia montato e scrive un file di log con le attività effettuate.
#!/bin/bash SORGENTE="/home/max" # Cosa copiare TARGET="/media/backup" # Dove copiare EXCLUDE="/home/max/.rsync/exclude" # Lista file da escludere TAG="backup" # tag dei log scritti in /var/log/messages # VERIFICA CHE IL DISCO E' MONTATO MOUNTED=$(df | grep $TARGET |awk '{print $6}') if [ "$MOUNTED" == "$TARGET" ] then echo "Il disco è montato: eseguo il backup" logger Inizio backup di $SORGENTE per `hostname` -t $TAG rsync -av --exclude-from=$EXCLUDE $SORGENTE $TARGET/ RSYNCERR=$? logger Fine backup per `hostname` rsync ha restituito $RSYNCERR -t $TAG exit 0 else echo "Il disco non è montato" logger Impossibile eseguire il backup di `hostname` disco non montato -t $TAG exit 1 fi
Spiegazione dello script
- La riga #!/bin/bash indica che lo script è in bash e invoca l’interprete.
- Le 4 righe successive sono le variabili dello script definite (vedi commento a fianco di ciascuna riga).
- La verifica che il disco di backup è effettivamente montato in $TARGET viene fatto con df, grep filtra la riga che ci interessa e awk filtra la colonna estraendo la directory nella quale è montato il disco. awk può essere superfluo poiché se il disco non è montato grep restituirà zero righe.
- Se il disco è montato effettua il backup se no esce con errore 1
- Il backup è effettuato con rsync. Le righe che precedono e seguono sono la scrittura del file di log sotto /var/log/messages usando il tag “backup” per facilitare la lettura.