alez
Vip
Dato che uso il Vu+ Duo come NAS nella rete locale casalinga e ho diversi hard disk USB collegati ad esso che uso come storage per foto ed altro materiale multimediale, mi sono inventato un sistema che mi faccia il backup in modo da salvaguardarmi da eventuali rotture di hard disk.
Lo script che riporto di seguito va comunque personalizzato e rappresenta soprattutto uno spunto più che uno script pronto e funzionante nel 100% dei casi, è utilizzabile su praticamente tutti i decoder Linux con Enigma1 e Enigma2 oltre che sui PC con linux, a patto di avere la versione di rsync compilata per il proprio sistema, per comodità in questo post allego la versione di rsync per Enigma2 (l'ho trovata in rete).
Premessa:
consideriamo di avere
/media/usb2
con montato il disco usato normalmente per lo storage dei dati che leggiamo e scriviamo normalmente
e
/media/usb3
con montato il disco di backup
nel mio caso particolare:
usb2 -> Western Digital Elements Desktop da 1,5 TB
usb3 -> Seagate FreeAgentDesktop 750 GB
sul disco WD ho una directory chiamata foto_e_ricordi che mi interessa backuppare sull'altro disco
Sia lo script di backup che si chiama mirror.sh che il binario di rsync compilato per mipsel li tengo sull'hard disk interno del Vu+ Duo in modo che siano sempre disponibili anche quando riflasho il decoder con una nuova immagine.
Ecco lo script:
Come funziona:
- si aspetta di trovare in /media/hdd/bin/ il binario di rsync
- si aspetta di creare i logs in /media/hdd/backup_logs/ se non esiste la directory la crea
- fa un ls sui 2 dischi in modo da toglierli dallo standby
- prima di effettuare l'rsync cerca nei 2 dischi un file che distingua chiaramente il disco:
io_sono_usb2 e io_sono_usb3, per creare questi 2 file basta dare il comando:
touch /media/usb2/io_sono_usb2
e
touch /media/usb3/io_sono_usb3
questo fa si che se per qualche motivo uno dei 2 dischi non è montato (soprattutto il destinazione) non succedano casini, tipo andare a riempire la flash del decoder col backup, dato che la posizione /media/usb3 non conterrebbe il disco ma sarebbe la flash
se tutto è ok, viene fatto l'rsync loggando tutto in /media/hdd/backup_logs/
vengono creati file di log con un nome sensato del tipo: 2011-03-16_08e40_mirror_log.txt
ecco un esempio del contenuto:
rsync con la modalità -av copia solo i files che hanno subito delle modifiche in modo da accelerare notevolmente i tempi.
Nota: il mio simpatico Seagate Free Agent Desktop ha il brutto vizio dopo un po che è inutilizzato di mettersi in Read Only quindi devo usare un trucchetto (che ho inserito direttamente nel mio script ma ho evitato di metterlo qui sopra), ossia fare l'umount e il mount per farlo tornare in Read Write:
Spero di essere shtato shpiegato
Lo script che riporto di seguito va comunque personalizzato e rappresenta soprattutto uno spunto più che uno script pronto e funzionante nel 100% dei casi, è utilizzabile su praticamente tutti i decoder Linux con Enigma1 e Enigma2 oltre che sui PC con linux, a patto di avere la versione di rsync compilata per il proprio sistema, per comodità in questo post allego la versione di rsync per Enigma2 (l'ho trovata in rete).
Premessa:
consideriamo di avere
/media/usb2
con montato il disco usato normalmente per lo storage dei dati che leggiamo e scriviamo normalmente
e
/media/usb3
con montato il disco di backup
nel mio caso particolare:
usb2 -> Western Digital Elements Desktop da 1,5 TB
usb3 -> Seagate FreeAgentDesktop 750 GB
sul disco WD ho una directory chiamata foto_e_ricordi che mi interessa backuppare sull'altro disco
Sia lo script di backup che si chiama mirror.sh che il binario di rsync compilato per mipsel li tengo sull'hard disk interno del Vu+ Duo in modo che siano sempre disponibili anche quando riflasho il decoder con una nuova immagine.
Ecco lo script:
Code:
#!/bin/sh
### Mirror dai dati sul disco di backup
# /media/usb2 -> disco sorgente
# /media/usb3 -> disco destinazione (backup)
LOG_PATH=/media/hdd/backup_logs/
LOG_FILE=$LOG_PATH`date '+%Y-%m-%d_%He%M'_mirror_log.txt`
COMANDO_RSYNC='/media/hdd/bin/rsync -av '
DISCO_SORGENTE=/media/usb2
DISCO_DESTINAZIONE=/media/usb3
FILE_VERIFICA_USB2=/media/usb2/io_sono_usb2
FILE_VERIFICA_USB3=/media/usb3/io_sono_usb3
if [ ! -d $LOG_PATH ]
then
mkdir $LOG_PATH
fi
touch $LOG_FILE
# Sveglio i dischi dallo standby
ls $DISCO_SORGENTE > /dev/null
ls $DISCO_DESTINAZIONE > /dev/null
echo "##########################################" >> $LOG_FILE
echo "Mirror del `date '+%d-%B-%Y alle %H:%M'`" >> $LOG_FILE
echo "##########################################" >> $LOG_FILE
echo "### BACKUP FOTO E RICORDI" >> $LOG_FILE
if [ -f $FILE_VERIFICA_USB2 ] && [ -f $FILE_VERIFICA_USB3 ]
then
echo "Dischi montati - faccio il backup" >> $LOG_FILE
$COMANDO_RSYNC /media/usb2/foto_e_ricordi/ /media/usb3/foto_e_ricordi/ >> $LOG_FILE
else
echo "Dischi non montato - backup fallito" >> $LOG_FILE
fi
echo "### FINE BACKUP FOTO E RICORDI" >> $LOG_FILE
Come funziona:
- si aspetta di trovare in /media/hdd/bin/ il binario di rsync
- si aspetta di creare i logs in /media/hdd/backup_logs/ se non esiste la directory la crea
- fa un ls sui 2 dischi in modo da toglierli dallo standby
- prima di effettuare l'rsync cerca nei 2 dischi un file che distingua chiaramente il disco:
io_sono_usb2 e io_sono_usb3, per creare questi 2 file basta dare il comando:
touch /media/usb2/io_sono_usb2
e
touch /media/usb3/io_sono_usb3
questo fa si che se per qualche motivo uno dei 2 dischi non è montato (soprattutto il destinazione) non succedano casini, tipo andare a riempire la flash del decoder col backup, dato che la posizione /media/usb3 non conterrebbe il disco ma sarebbe la flash
se tutto è ok, viene fatto l'rsync loggando tutto in /media/hdd/backup_logs/
vengono creati file di log con un nome sensato del tipo: 2011-03-16_08e40_mirror_log.txt
ecco un esempio del contenuto:
Code:
##########################################
Mirror del 16-March-2011 alle 08:40
##########################################
### BACKUP FOTO E RICORDI
Dischi montati - faccio il backup
building file list ... done
./
file_backuppato.jpg
sent 187546 bytes received 48 bytes 41687.56 bytes/sec
total size is 63317073520 speedup is 337521.85
### FINE BACKUP FOTO E RICORDI
rsync con la modalità -av copia solo i files che hanno subito delle modifiche in modo da accelerare notevolmente i tempi.
Nota: il mio simpatico Seagate Free Agent Desktop ha il brutto vizio dopo un po che è inutilizzato di mettersi in Read Only quindi devo usare un trucchetto (che ho inserito direttamente nel mio script ma ho evitato di metterlo qui sopra), ossia fare l'umount e il mount per farlo tornare in Read Write:
Code:
### toglie USB3 (Seagate FreeAgentDesktop del caxxo) dal Read Only
if mount | grep "9d190f89-d07b-4a84-b513-82e87d7ea615" | grep "(ro" > /dev/null ; then
echo "Disco in Read Only"
umount /media/usb3
mount /dev/disk/by-uuid/9d190f89-d07b-4a84-b513-82e87d7ea615 /media/usb3
else
echo "Disco in Read Write"
fi
Spero di essere shtato shpiegato