Script per il mirror dell’hard disk su un disco USB

Fare il backup dei propri dati e’ una praticata assolutamente obbligatoria.
Io personalmente ho acquistato un disco USB dove eseguo un mirror delle partizioni che ospitano i sistemi operativi che ho (Windows, Linux ufficiale e Linux di prova), e il restante spazio e’ lasciato alla partizione dove sincronizzo i miei dati, grazie ad rsync, e dove appoggio grossi file che generalmente masterizzo (anime in particolar modo).

Ho partizionato il disco USB allo stesso modo di come ho le partizioni con i sistemi operativi, e il restante spazio e’ andato alla partizione dati.

Poi periodicamente eseguo questo script, che impiega circa un’oretta e un quarto per fare tutto (la maggior parte del tempo, ovviamente, e’ occupata dai vari dd).

Ecco lo script:

#!/bin/bash

#Fa il mirror di tutto il sistema sull'hd portatile
#Legolas - 06 Mar 2009

#Dichiarazioni variabili
DATECMD="date +%H:%M"

##---------------------------------------------------------

function doDataSync()
{
#backup delle cartelle dati
echo
echo `$DATECMD` - Sincronizzazione dei dati

umount /dev/sdb5
mkdir /root/backupdisk
mount /dev/sdb5 /root/backupdisk

#for i in backup cmlug download games knowhow memories multimedia scout temp vmware works
#do
#    echo `$DATECMD` - Backup directory $i
#    rsync -azv --delete /media/data/$i /root/backupdisk/bck_legolas
#done
echo Sincronizzazione dei dati
echo
rsync -azv --delete /media/data/ /root/backupdisk/bck_legolas

umount /dev/sdb5
rmdir /root/backupdisk

#terminato tutto
echo
echo `$DATECMD` - Mirror dei dati completato. Have fun!
echo
}

function doMirror()
{

echo
echo `$DATECMD` - Inizio backup del sistema

#MBR
echo
echo `$DATECMD` - Mirror del MRB...
dd count=1 bs=512 if=/dev/sda of=/media/data/backup/MBR.img
dd count=1 bs=512 if=/dev/sda of=/dev/sbd

#partizione 1
echo
echo `$DATECMD` - Mirror partizione 1...
umount /dev/sdb1
dd if=/dev/sda1 of=/dev/sdb1 bs=4M

#partizione 2
echo
echo `$DATECMD` - Mirror partizione 2...
umount /dev/sdb2
dd if=/dev/sda2 of=/dev/sdb2 bs=4M

#partizione 3
echo
echo `$DATECMD` - Mirror partizione 3...
umount /dev/sdb3
dd if=/dev/sda3 of=/dev/sdb3 bs=4M

#salvataggio della home
#openssl enc -des3 -in home.tar.unec -out home.tar.des3 -pass pass:prova
echo
echo `$DATECMD` - Salvataggio della Home
cd /home
tar -czf /media/data/backup/home.gz .
cd - > /dev/null

doDataSync
}
##---------------------------------------------------------

#Inizio script

#Controlla se l'utente che ha lanciato lo script e' root
if [ "$(id -u)" != "0" ]; then
echo "Lo script va eseguito come root, magari usando sudo" 1>&2
exit 1
fi

#Chiede conferma per il mirror
read -n1 -p "Mirror del sistema con il disco USB, <Y>es, <N>o, <S>olo dati? "
echo
case $REPLY in
y | Y)
doMirror
;;
s | S)
doDataSync
;;
* )
echo "Abort..."
;;
esac

Leave a Reply