Zeroshell – Backup schedulato della configurazione su usb

Finalmente un articoletto su uno dei miei progetti preferiti: Zeroshell

Zeroshell è una distribuzione Linux per server e dispositivi embedded il cui scopo è fornire i principali servizi di rete (uno stupendo Firewall) creatura di Fulvio Ricciardi che non finirò mai di ringraziare per il lavoro svolto e per averlo messo a disposizione della comunità. Qui sotto un’immaginetta per farvi un’idea di quello che avrete davanti appena completata la prima installazione:

 

 

Attorno a questo meraviglioso progetto ruota una fervidissima community di sviluppatori, sistemisti, amatori ecc che mettono a disposizione e a confronto le proprie esperienze. Forse avrei dovuto iniziare a parlare di questo progetto documentandone la mia installazione preferita su mainboard Alix 2D13 di cui vi lascio una piccola anteprima.

 

Come potete vedere potete installare il sistema operativo su una compact flash e come vedremo tra poco salvare le vostre configurazioni su una chiavetta usb. Inutile che io stia a dirvi che lo stesso tipo di installazione la potete fare con un vecchio PC, con il giusto numero di schede di rete (2 sono sufficienti per iniziare, 3 sono ancora meglio per testare cose meravigliose come il Net balacing o Failover di 2 connessioni ADSL.) Spero di aver stimolato abbastanza la vostra fantasia e voglia di contribuire ad un progetto così interessante. Per ora immaginiamo di aver già fatto tutto e configurato la nostra prima rete e pensiamo solo a salvare la configurazione appena fatta che potremo per esempio importare su un nuovo dispositivo in caso di guasti. Come sempre non ho inventato nulla, e vi segnalo anticipatamente la pagina del forum da cui ho raccolto e messo insieme questa mini guida:

http://www.zeroshell.net/eng/forum/viewtopic.php?t=2931&highlight=profile+error

Ringraziamo immediatamente Ihyae (aka Dennis), che ci suggerisce dove guardare. Guardando gli script presenti nel path: /root/kerbynet.cgi/scripts/ invocando il backup dalla WebGUI, viene lanciato il seguente comando:

/bin/sh /root/kerbynet.cgi/scripts/backupdb /udev/hda3 _DB.001 Yes

Dennis ci ha lasciato bello pronto un script per ottenere una copia “compressa” del profilo che potremo posizionare comodamente su una chiavetta usb “montata” da qualche parte (tipo /mnt/backup).

Lo script leggermente modificato lo trovate qui sotto:

###---INIZIO DELLO SCRIPT----###
#!/bin/sh
mount /udev/sda1 /mnt/backup 			###---nome  della periferica usb e mount point---###
BN= cufrezero-`date +%e-%m-%y`.bak		###---BACKUP NAME---#####
source /etc/kerbynet.conf 
function  UMOUNT () { 
  cd / 
  umount $MP/$DB.AUX 2> /dev/null 
  if [ "$ALREADYMOUNTED" == No ] ; then 
     umount "$MP" && rmdir "$MP" 
  fi 
} 
function ERROR () { 
  cd / 
  echo ERROR > "$MP/$DB/.settings/LastBackup" 
  UMOUNT 
  exit 1 
} 
DEV="$1" 
DB="$2" 
COMPRESSED="$3" 
WOLOGS="$4" 
[ -z "$DEV" -o -z "$DB" ] && exit 1 
$SCRIPTS/umountstorage >/dev/null 
NODEV=${DEV:2} 
LINE=`df -T -P | grep "$NODEV "` 
if [ -z "$LINE" ] ; then 
   MP=/storage/`echo $DEV | sed -e "s/\//_/g"`; 
   mkdir -p "$MP" 
   mount -o rw "$DEV" "$MP" || exit 1 
   if [ -r /$MP/$DB.AUX ] ; then 
      if ! mount -oloop $MP/$DB.AUX /$MP/$DB ; then 
         UMOUNT 
         exit 2 
      fi 
   fi 
   ALREADYMOUNTED=No 
else 
   MP=`echo $LINE | cut -f7 -d' '` 
   mount -oremount,rw "$MP" || exit 1 
   ALREADYMOUNTED=Yes 
   if [ -r /$MP/$DB.AUX ] ; then    
     if ! mount -oloop $MP/$DB.AUX /$MP/$DB ; then 
       UMOUNT 
       exit 2 
     fi 
   fi 
fi 
cd "$MP/$DB" 
if ! [ -d .settings ]; then 
   UMOUNT 
   exit 3 
fi 
if [ "$WOLOGS" = Yes ] ; then 
  EXCLUDE='--exclude LOG' 
else 
  EXCLUDE='' 
fi 
if [ "$COMPRESSED" == Yes ] ; then 
   rm -rf /mnt/backup/$BN 
   for N in `seq 1 100` ; do 
      echo "$N BACKUP $DEV $DB `date` ================================================================================================" >> /mnt/backup/$BN 
   done 
   tar cfzv - --exclude var/register/system/havp/tmp/\* $EXCLUDE . | uuencode /dev/stdout >> /mnt/backup/$BN || ERROR 
   cd /mnt/backup 
   md5sum $BN > $BN.md5 
else 
   tar cf - --exclude var/register/system/havp/tmp/\* $EXCLUDE .  || ERROR 
fi 
date +"%d %b %Y %H:%M" > "$MP/$DB/.settings/LastBackup" 
UMOUNT
umount /mnt/backup/   ####---ho aggiunto anche un unmount per sicurezza----####
###---fine dello script----###

Quello che dobbiamo fare è inserire lo script in una directory di quelle che non si “resettano” ad ogni riavvio (tipo (Database/script/) e avviarlo da shell così: /bin/bash /Database/backup_profile hda3 _DB.002 Yes dove hda3 è la partizione che il nostro zero usa correntemente per salvare i profili e _DB.002 è il profilo che stiamo usando (quello “attivo”).

Bene, facciamo ancora un paio di considerazioni:

se collegate una chiavetta usb al vostro zero, potrete salvarci sopra il profilo, comodamente dalla webgui di zeroshell….

Bene, da li possiamo “annotarci” il nome della periferica usb da passare allo script…

E dopo qualche backup, possiamo cliccare sul tasto “View FS” ed ecco che ci troveremo davanti una bella finestrella con i nomi dei nostri backup….

Resta ancora un’ultima cosetta da fare… SCHEDULARE:

possiamo farlo dalla GUI

Abbiamo finito anche questa sera con un altro piccolo anticipo di quello che è e sarà un progetto interessantissimo, e concludiamo ancora con un bel Grazie Fulvio.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *