[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Aiuto per piacere !!!! in questo maledetto backup



Lo script di backup parte ogni giorno alle 13:00 ed alle 20:00
Ogni volta vengono utilizzati DVD differenti, quindi dal lunedì al
venerd' compreso sono 10 DVD differenti, ed ogni DVD è assegnato ad un
determinato giorno e ora.
Il tutto si trova guest Linux Debian Lenny in Virtual Box su un pc
host con Windows 7 Pro.
E' stato importato pari pari da un pc Windows XP che aveva appunto
come guest la stessa VBox.
Sul vecchio PC non sbagliava mai un backup.
Ora in due settimane abbiamo avuto i seguenti risultati.
Lunedì 13.00 Failed 20.00 Failed
Martedi 13.00 Failed 20.00 OK
Mercoledi 13.00.OK 20.00 OK
Giovedì 13.00 Failed 20.00 Failed
Venedrì 13.00 Failed 20.00 OK
Settimana in corso
Lunedì 13.00 OK 20.00 OK
Martedì 13.00 OK 20.00 Failed
Quindi i DVD non paiono avere colpe.
Non riesco a trovarne una logica se non pensare a un bug (ma perchè
prima non lo faceva sull'altro pc) oppure
a problemi del masterizzatore.
L'errore che viene riportato è il seguente dal LOG

Executing 'builtin_dd if=/w1/tmp/sigest.iso of=/dev/hdc obs=32k seek=0'
:-( unable to O_EXCL /dev/hdc: someone was in time to remount?

La procedura che ho scritto nei vari anni, prima prendendo una
procedura piccola su un giornale poi ampliandola personalmente di anno
in anno è la seguente :
Scusate per la lunghezza e spero di non aver lasciato dati sulla
procedura ma mi serve urgentemente un AIUTO.

#!/bin/sh
# Backup su DVD-RW - file /backup.sh
clear
X=`date +%Y%m%d-%H%M`.log
DATA_BACKUP=`date +%Y%m%d-%H%M`.bk
LOG="/w1/log/$X"
echo
echo "########  PROCEDURA BACKUP ARCHIVI SIGEST (SIM) DVD-RW ########" >> $LOG
echo
echo -n " ----> Assegnazione variabili.... " >> $LOG
# SRC= elenco directory di cui eseguire il backup
# TMP= directory di appoggio (con / finale!)
# TAR= nome del file compresso di appoggio
# IMG= nome del file immagine iso
# CDEW= dispositivo indicato da cdrecord --scanbus come DVD-RW
# LOG= file di log delle operazioni
# S=s variabile fissa per ora non utilizzata
#SRC="/home/sigest/fabbri"
SRC="/home"
SRC2="/etc"
LISTAESCLUSIONE="/w1/exclude_list"
TMP="/w1/tmp/"
TAR="/w1/tmp/sim.tar"
IMG="/w1/tmp/sigest.iso"
DVDRW="1000,2,0 100002"
DEVDVD="/dev/hdc"
MNTISO="/mnt/iso"
MEDIADVD="/media/cdrom0"
CONFIG_FILEISO="/lista-daiso"
CHECKSUM_FILEISO="/checksums-daiso.md5.txt"
CONFIG_FILEMEDIA="/lista-dadvd"
CHECKSUM_FILEMEDIA="/checksums-media.md5.txt"
MD5SUM_C_ISO="/md5sum-c_iso.md5.txt"
MD5SUM_C_DVD="/md5sum-c_dvd.md5.txt"
ERRORE_COPIA="ERRORE COPIA"
MANCA_DVD="DVD MANCANTE O ILLEGGIBILE O NON MONTATO"
HOME1="/home/rxxxxxx/"
HOME2="/home/sxxxxx/"
UTENTE1="rxxxxxx"
UTENTE2="sxxxxxxx"
ESTENSIONE="txt"
PATHLOG="/w1/log"
PATHSOURCE="/"
SENDER="sxxxx@mittente.com"
FAILED="FAILED"
WARNING="WARNING"
SI_DVD="/si_dvd"
NO_DVD="/no_dvd"
SE_DVD="/se_dvd"
MD5SUM_CONTROL="/md5_control.txt"
NOMECC="sigest.ecc"
GIORNO=`date +%a`
MATTINO="/w1/week/mattino/$GIORNO/$NOMECC"
MAIL_01="p1@p1.it"
MAIL_02="p2@p2.com"
MAIL_03="p3@p3.com"
MAIL_04="p4@p4.com"
S="s"
echo > $LOG
echo -n "Inizio log
**************************************************** " >> $LOG
date >> $LOG
echo >> $LOG
sleep 2
echo "OK Inizio Procedura di Backup."
echo "OK Inizio Procedura di Backup." >> $LOG
echo
logger -p daemon.info 1.Inizio backup
# Cancellazione directory di appoggio
logger -p daemon.info "2.Cancellazione file in $TMP"
cd $TMP
echo " ----> Situazione pre-copie " >> $LOG
echo " ----> Situazione pre-copie "
ls -al $TMP >> $LOG 2>&1
echo " ----> Cancellazione files precedenti..." >> $LOG
echo " ----> Cancellazione files precedenti..."
rm -vrf $TMP* >> $LOG 2>&1
sleep 2
echo "OK Effettuata cancellazione tmp"
echo "OK Effettuata cancellazione tmp" >> $LOG
echo
echo  " " >> $LOG
echo  " ----> Creazione del file iso ...." >> $LOG
echo  " ----> Creazione del file iso ...."
logger -p daemon.info 3.Creazione del file iso
cd $PATHSOURCE
rm -vrf *.bk
date > $DATA_BACKUP
# mkisofs -R -J -l -o $IMG -exclude-list $LISTAESCLUSIONE / >> $LOG 2>&1
genisoimage -R -J -l -o $IMG -exclude-list $LISTAESCLUSIONE
$PATHSOURCE >> $LOG 2>&1
du -s -m $TMP >> $LOG
#sync
echo "OK Creata Immagine ISO."
echo "OK Creata Immagine ISO." >> $LOG
echo
echo "Cambio permessi ISO"
echo "Cambio permessi ISO" >> $LOG
echo
chown sigest:sigest $IMG >> $LOG
chmod 777 $IMG >> $LOG >> $LOG
echo
echo "Copia su vshare sigest.iso"
echo "Copia su vshare sigest.iso" >> $LOG
mount -t vboxsf vshare /media/vbox_share -o uid=`id -u`,gid=`id -g` >> $LOG
cp -vf $IMG /media/vbox_share/ >> $LOG
umount /media/vbox_share >> $LOG
echo
rm -rfv $SI_DVD >> $LOG
rm -rfv $NO_DVD >> $LOG
rm -rfv $SE_DVD >> $LOG
echo "Chiudo il Cassettino" >> $LOG
echo "Chiudo il Cassettino"
eject -vt >> $LOG
echo "Monto cdrom" >> $LOG
echo "Monto cdrom"
mount -v /dev/hdc /media/cdrom
if [[ $(df | grep hdc | wc -l) -eq 0 ]]; then
   echo "MANCA DVD MONTATO ? ILLEGGIGILE ? VERGINE ?" >> $LOG
   echo "MANCA DVD MONTATO ? ILLEGGIGILE ? VERGINE ?"
   echo "TENTERO SCRITTURA PER VEDERE SE VERGINE" >> $LOG
   echo "TENTERO SCRITTURA PER VEDERE SE VERGINE"
   touch $SE_DVD
 else
   touch $SI_DVD >> $LOG
   echo " ----> Formattazione DVD-RW......" >> $LOG
   echo " ----> Formattazione DVD-RW......"
   logger -p daemon.info 4.Formattazione del DVD-RW
   dvd+rw-format -blank $DEVDVD >> $LOG 2>&1 || rm $SI_DVD ; touch $NO_DVD
   ls -l /media/cdrom0 >> $LOG
   echo "Tentativo di Formattazione Supporto Effettuata."
   echo "Tentativo di Formattazione Supporto Effettuata." >> $LOG
   echo " ----> Scrittura DVD-RW......"
   echo " ----> Scrittura DVD-RW......" >> $LOG
   # Scrittura dati sul dvd-rw con espulsione dvd-rw
   echo " ----> Scrittura DVD-RW......" >> $LOG
   echo " ----> Scrittura DVD-RW......"
   logger -p daemon.info 5.Scrittura su DVD-RW
   growisofs -dvd-compat -Z $DEVDVD=$IMG >> $LOG 2>&1 || rm $SI_DVD ;
touch $NO_DVD         RIGA IN CUI RESTITUISCE L'ERRORE
   echo "Tentativo di Scrittura su supporto Terminata." >> $LOG
   echo "Tentativo di Scrittura su supporto Terminata."
fi
if [ -f $SE_DVD ]; then
   echo "TENTO SCRITTURA PER VEDERE SE VERGINE" >> $LOG
   echo "TENTO SCRITTURA PER VEDERE SE VERGINE"
   echo " ----> Scrittura DVD-RW......" >> $LOG
   echo " ----> Scrittura DVD-RW......"
   growisofs -dvd-compat -Z $DEVDVD=$IMG >> $LOG && touch $SI_DVD
else
   touch $NO_DVD
fi
# Controllo Scrittura Dati
echo "Controllo Scrittura."
echo "Controllo Scrittura." >> $LOG
echo "  " >> $LOG
rm -vf $CHECKSUM_FILEISO >> $LOG 2>&1
rm -vf $CHECKSUM_FILEMEDIA >> $LOG 2>&1
umount $MNTISO >> $LOG 2>&1
mount -t iso9660 $IMG $MNTISO -o loop >> $LOG 2>&1
cd $MNTISO >> $LOG 2>&1
#find -exec md5sum >> $CHECKSUM_FILEISO {} \;
#find /mnt/iso -type f -exec cat {} \; |md5sum >> $CHECKSUM_FILEISO
find $MNTISO -type f -print0 | xargs -0 md5sum >> $CHECKSUM_FILEISO
if [ -f $SI_DVD ]
   then
       echo " ----> Controllo Scrittura DVD-RW......" >> $LOG
       echo " ----> Controllo Scrittura DVD-RW......"
       umount $DEVDVD >> $LOG 2>&1
       mount $DEVDVD $MEDIADVD >> $LOG 2>&1
       cd $MEDIADVD >> $LOG 2>&1
       echo " Contenuto DVD " >> $LOG
       ls -la >> $LOG
       #find -exec md5sum >> $CHECKSUM_FILEMEDIA {} \;
       #find /media/cdrom -type f -exec cat {} \; |md5sum >> $CHECKSUM_FILEMEDIA
       find $MEDIADVD -type f -print0 | xargs -0 md5sum >> $CHECKSUM_FILEMEDIA
fi
cd /
#--------------------------------------------------------------------
# La parte seguente e' stata eliminata e sostituita dal controllo
# sul file con md5sum -c che confronta hash con il file
# controllando cosi anziche copia.iso vs copiadvd
# copia.iso vs file su disco - copiadvd vs file su disco
#--------------------------------------------------------------------
#echo -n " ----> Controllo Differenze fra iso e DVD       " >> $LOG
#echo -n ":  " >> $LOG
#diff -s $CHECKSUM_FILEISO $CHECKSUM_FILEMEDIA >> $LOG
#echo -n "___________________________________________________  " >> $LOG
echo " ----> Controllo hash dei file        " >> $LOG
echo " ----> Controllo hash dei file                        "
echo "    " >> $LOG
echo " ----> Controllo hash dei file sigest.iso    " >> $LOG
echo " ----> Controllo hash dei file sigest.iso             "
if [ -f $MD5SUM_C_ISO ]
   then rm -vf $MD5SUM_C_ISO >> $LOG 2>&1
        echo "Cancellato" " " $MD5SUM_C_ISO
        echo "Cancellato" " " $MD5SUM_C_ISO >> $LOG
fi
if [ -f $MD5SUM_C_DVD ]
   then rm -vf $MD5SUM_C_DVD >> $LOG 2>&1
        echo "Cancellato" " " $MD5SUM_C_DVD
        echo "Cancellato" " " $MD5SUM_C_DVD >> $LOG
fi
if [ -f $MD5SUM_CONTROL ]
   then rm -vf $MD5SUM_CONTROL >> $LOG 2>&1
        echo "Cancellato" " " $MD5SUM_CONTROL
        echo "Cancellato" " " $MD5SUM_CONTROL >> $LOG
fi
if [ -f $CHECKSUM_FILEISO ]
   then md5sum -c $CHECKSUM_FILEISO >> $MD5SUM_C_ISO
fi

echo " ----> Controllo presenza dvd e eventualmente hash file su DVD" >> $LOG
echo " ----> Controllo presenza dvd e eventualmente hash file su DVD"
if [[ $(df | grep hdc | wc -l) -eq 0 ]]; then
   echo "MANCA DVD MONTATO O ILLEGGIGILE" >> $LOG
   echo "MANCA DVD MONTATO O ILLEGGIGILE"
   sendEmail -f $SENDER -t $MAIL_01 -u $MANCA_DVD -m $MANCA_DVD -s
.................................-a $LOG
   sendEmail -f $SENDER -t $MAIL_02 -u $MANCA_DVD -m $MANCA_DVD -s
.................................-a $LOG
   sendEmail -f $SENDER -t $MAIL_03 -u $MANCA_DVD -m $MANCA_DVD -s
.................................-a $LOG
   sendEmail -f $SENDER -t $MAIL_04 -u $MANCA_DVD -m $MANCA_DVD -s
................................ -a $LOG
 else
   echo " ----> Controllo hash dei file su DVD   " >> $LOG
   echo " ----> Controllo hash dei file su DVD   "
   md5sum -c $CHECKSUM_FILEMEDIA >> $MD5SUM_C_DVD
   echo " ----> Creato file si_dvd  " >> $LOG
   echo " ----> Creato file si_dvd  "
fi
echo " ----> Ricerca grep per hash errati sigest.iso   " >> $LOG
echo " ----> Ricerca grep per hash errati sigest.iso   "
for file in $MD5SUM_C_ISO
do
    if [ -f $file ];
       then grep -n $FAILED $MD5SUM_C_ISO >> $MD5SUM_CONTROL;
            grep -n $WARNING $MD5SUM_C_ISO >> $MD5SUM_CONTROL;
            echo "Effettuata ricerca file corrotti su md5sum della iso" >> $LOG
            echo "Effettuata ricerca file corrotti su md5sum della iso"
       else
            echo "ATTENZIONE IL FILE " $MD5SUM_C_ISO "NON ESISTE !!!" >> $LOG
            echo "ATTENZIONE IL FILE " $MD5SUM_C_ISO "NON ESISTE !!!"
            echo "ATTENZIONE IL FILE " $MD5SUM_C_ISO "NON ESISTE !!!"
            sendEmail -f $SENDER -t $MAIL_01 -u $ERRORE_COPIA -m
$MD5SUM_C_ISO " NON ESISTE  " -s ..................... -a $LOG
            sendEmail -f $SENDER -t $MAIL_02 -u $ERRORE_COPIA -m
$MD5SUM_C_ISO " NON ESISTE  " -s ..................... -a $LOG
            sendEmail -f $SENDER -t $MAIL_03 -u $ERRORE_COPIA -m
$MD5SUM_C_ISO " NON ESISTE  " -s ..................... -a $LOG
            sendEmail -f $SENDER -t $MAIL_04 -u $ERRORE_COPIA -m
$MD5SUM_C_ISO " NON ESISTE  " -s ..................... -a $LOG

    fi
done
if [ -f $SI_DVD ]
   then echo " ----> Ricerca (grep) per hash errati su DVD          " >> $LOG
        echo " ----> Ricerca (grep) per hash errati su DVD          "
   if [ -f $MD5SUM_C_DVD ]
      then grep -n $FAILED $MD5SUM_C_DVD >> $MD5SUM_CONTROL;
           grep -n $WARNING $MD5SUM_C_DVD >> $MD5SUM_CONTROL;
           echo "Effettuata ricerca file corrotti su md5sum del dvd" >> $LOG
           echo "Effettuata ricerca file corrotti su md5sum del dvd"
   else
      echo "ATTENZIONE IL FILE " $MD5SUM_C_DVD "NON ESISTE !!!" >> $LOG
      echo "ATTENZIONE IL FILE " $MD5SUM_C_DVD "NON ESISTE !!!"
      sendEmail -f $SENDER -t $MAIL_01 -u $ERRORE_COPIA -m
$MD5SUM_C_DVD " NON ESISTE  " -s........... -a $LOG
      sendEmail -f $SENDER -t $MAIL_02 -u $ERRORE_COPIA -m
$MD5SUM_C_DVD " NON ESISTE  " -s .......... -a $LOG
      sendEmail -f $SENDER -t $MAIL_03 -u $ERRORE_COPIA -m
$MD5SUM_C_DVD " NON ESISTE  " -s ...........-a $LOG
      sendEmail -f $SENDER -t $MAIL_04 -u $ERRORE_COPIA -m
$MD5SUM_C_DVD " NON ESISTE  " -s ...........-a $LOG
   fi
fi
if [ -f $SI_DVD ]
   then echo "Controllo se md5sum -c su dvd andato a buon fine o
esistono file corrotti" >> $LOG
        echo "Controllo se md5sum -c su dvd andato a buon fine o
esistono file corrotti"
   if [ -s $MD5SUM_CONTROL ];
      then echo "ATTENZIONE ERRORE md5" >> $LOG
           echo "ATTENZIONE ERRORE md5"
           sendEmail -f $SENDER -t $MAIL_01 -u "ERRORE md5 in Backup"
-m " md5sum CON ERRORE check allegato " -s ............ -a
$MD5SUM_CONTROL $LOG
           sendEmail -f $SENDER -t $MAIL_02 -u "ERRORE md5 in Backup"
-m " md5sum CON ERRORE check allegato " -s ............. -a
$MD5SUM_CONTROL $LOG
           sendEmail -f $SENDER -t $MAIL_03 -u "ERRORE md5 in Backup"
-m " md5sum CON ERRORE check allegato " -s ............. -a
$MD5SUM_CONTROL $LOG
           sendEmail -f $SENDER -t $MAIL_04 -u "ERRORE md5 in Backup"
-m " md5sum CON ERRORE check allegato " -s ............. -a
$MD5SUM_CONTROL $LOG
           cat  $MD5SUM_CONTROL >> $LOG
   fi
fi
if [ -f $SI_DVD ]
   then
   if [ ! -s $MD5SUM_CONTROL ]
      then echo "NON CI SONO ERRORI md5" >> $LOG
           sendEmail -f $SENDER -t $MAIL_01 -u "Backup OK" -m
"Controllo Backup andato a buon fine 2" -s .......... -a
$MD5SUM_CONTROL $LOG
           sendEmail -f $SENDER -t $MAIL_02 -u "Backup OK" -m
"Controllo Backup andato a buon fine 2" -s .......... -a
$MD5SUM_CONTROL $LOG
           sendEmail -f $SENDER -t $MAIL_03 -u "Backup OK" -m
"Controllo Backup andato a buon fine 2" -s .......... -a
$MD5SUM_CONTROL $LOG
           sendEmail -f $SENDER -t $MAIL_04 -u "Backup OK" -m
"Controllo Backup andato a buon fine 2" -s .......... -a
$MD5SUM_CONTROL $LOG
   fi
fi
echo >> $LOG
ls -l /checks* >> $LOG
cp -vf $LOG $HOME1 >> $LOG
cp -vf $LOG $HOME2 >> $LOG
if [ -f $MD5SUM_C_ISO ]
   then cp -vf $MD5SUM_C_ISO $HOME1 >> $LOG
        cp -vf $MD5SUM_C_ISO $HOME2 >> $LOG
fi
if [ -f $MD5SUM_C_DVD ]
   then cp -vf $MD5SUM_C_DVD $HOME1 >> $LOG
        cp -vf $MD5SUM_C_DVD $HOME2 >> $LOG
fi
if [ -f $MD5SUM_CONTROL ]
   then cp -vf $MD5SUM_CONTROL $HOME1 >> $LOG
        cp -vf $MD5SUM_CONTROL $HOME2 >> $LOG
fi
cd $HOME1 >> $LOG
chown $UTENTE1:$UTENTE1 $X >> $LOG
NOMETXT1=`echo $X|cut -d"." -f1`
mv $X `echo $NOMETXT1.$ESTENSIONE`;
for file in md5*
do
chown $UTENTE1:$UTENTE1 $file >> $LOG
done
cd $HOME2 >> $LOG
chown $UTENTE2:$UTENTE2 $X >> $LOG
NOMETXT2=`echo $X|cut -d"." -f1`
mv $X `echo $NOMETXT2.$ESTENSIONE`;
for file in md5*
do
chown $UTENTE2:$UTENTE2 $file >> $LOG
done
echo "  " >> $LOG
if [ -f $SI_DVD ]
    #lpr -Plp2 $LOG
   then  echo "Creo file ecc per dvdisaster" >> $LOG
         echo "Creo file ecc per dvdisaster"
         dvdisaster -c -i $IMG -e $MATTINO >> $LOG 2>&1
fi
echo >> $LOG
cd $MEDIADVD >> $LOG 2>&1
ls -la >> $LOG
cd
umount $DEVDVD >> $LOG 2>&1
umount $MNTISO >> $LOG 2>&1
echo  "..." >> $LOG
ls -l $IMG >> $LOG
echo "Fine LOG ********************************" >> $LOG
echo "Fine LOG ********************************"
date >> $LOG
eject $DEVDVD

Grazie mille a tutti e ancora HELP


Reply to: