#!/bin/bash # Este script sirve para hacer copias de seguridad # usando grupos de CD-RW rotatorios # Autor: Luis Angel Cofiño en webmaster algarroba lacofi.org # --------------------------------- DIRS1="/datos/textos \ /datos/personal \ /datos/profesional" DIRS2="/datos/compartidos \ /datos/evolution_lacofi \ /datos/evolution_maria \ /datos/externos " DIRS3="/home \ /etc \ /root \ /datos/dosemu \ /datos/imagen" TEMP="/datos/seguridad/zap" FECHA=`date +%d%b%Y` IMAGEN="/datos/seguridad/cd" DIARIO="/datos/seguridad/diario" RIP="arranque/rip.img" CAT="arranque/catalogo.cat" ESTADO="/var/log/estado.log" CONTROL="/var/log/backup" if [ "$UID" = "0" ]; then if [ "$1" = "reset" ]; then if [ -f /var/log/volcado_duro.dir ]; then echo "El status es: "`cat /var/log/volcado_duro.dir` else echo "impar" > /var/log/volcado_duro.dir fi if [ -d "/datos/seguridad" ]; then echo "/datos/seguridad existe" else echo "Creando /datos/seguridad" mkdir /datos/seguridad fi if [ -d "/datos/seguridad/cd" ]; then echo "/datos/seguridad/cd existe" else echo "Creando /datos/seguridad/cd" mkdir /datos/seguridad/cd fi if [ -d "/datos/seguridad/zap" ]; then echo "/datos/seguridad/zap existe" else echo "Creando /datos/seguridad/zap" mkdir /datos/seguridad/zap fi if [ -d "/datos/seguridad/diario" ]; then echo "/datos/seguridad/diario existe" else echo "Creando /datos/seguridad/zap" mkdir /datos/seguridad/diario fi if [ -d "/datos/seguridad/zap/arranque" ]; then echo "/datos/seguridad/zap/arranque existe" else echo "Creando /datos/seguridad/zap/arranque" mkdir /datos/seguridad/zap/arranque echo "Debes colocar en /datos/seguridad/zap/arranque" echo "una imagen de rescate, preferiblemente RIP" fi echo "El registro ha sido reseteado" > $ESTADO echo "-----------------------------" >> $ESTADO exit fi # Poner todo a cero rm -Rf /datos/seguridad/zap/*.tar.bz2 rm -Rf /datos/seguridad/cd/*.iso rm -Rf /var/log/md5_*.log rm -Rf $CONTROL*.log rm -Rf $DIARIO/*.tar.bz2 # Ahora creamos ficheros tar con la copia de seguridad # y luego los pasamos a imágenes ISO, listas para grabar for NUM in 1 2 3 do echo "Creando serie$NUM-$FECHA.tar.bz2" >> $ESTADO tar cjf $TEMP/serie$NUM-$FECHA.tar.bz2 \ --listed-incremental=$CONTROL$NUM.log \ `eval echo '$DIRS'$NUM` &> /dev/null status=$? echo "La compresión se ejecutó con código $status" >> $ESTADO mkisofs -r -o $IMAGEN/serie$NUM-$FECHA.iso \ -b $RIP -c $CAT $TEMP &> /dev/null status=$? echo "La imagen ISO se creó con código $status" >> $ESTADO sumamd5=`md5sum $IMAGEN/serie$NUM-$FECHA.iso | awk '{print $1}'` echo $sumamd5 >> /var/log/md5_$NUM.log rm $TEMP/*.tar.bz2 done if [ -f "$IMAGEN/serie1-$FECHA.iso" ] || [ -f "$IMAGEN/serie2-$FECHA.iso" ] || [ -f "$IMAGEN/serie3-$FECHA.iso" ]; then echo "Pendiente" > /var/log/volcado_cd.dir echo "Copia de seguridad almacenada en el dico duro" >> $ESTADO echo "La copia de seguridad no está a salvo" >> $ESTADO fi else echo "¡Solo root puede hacer eso!" fi