2007-01-02

Programa para Backup Automatico

Este programa es una adaptacion de uno que me encontre en internet un día pero no se de quien es, por lo que con respeto le pido disculpas por usar su idea para adaptarla y colocarla aca, pero yo ya lo probe y funciona muy bien.


#!/bin/bash

DATE=`/bin/date +&F`
TMPDIRPARENT=”/tmp/backup”
TMPDIR=”/tmp/backup/$DATE”
ERRORLOG=”/tmp/backuperrors-$DATE.log”

#Se coloca el directorio donde se desea guardar el back up
BACKUPDIR=”/u/publicos/reportes”

#Días de retención en disco duro
RETENCION=”7”

#Se coloca los directorios a los cuales se les hara el back up
ORIG=”\

/home/samuel/documentos \
/boot/vmlinuz \
/etc”

#Borrar el fichero de errores
rm $ERRORLOG 2>/dev/null

#Se crean los directorios necesarios para ejecutar el shell
if `test –d $BACKUPDIR`
then
mkdir –p $BACKUPDIR 2>>$ERRORLOG
fi

mkdir -p $TMPDIRPARENT 2>>$ERRORLOG
mkdir -p $TMPDIR 2
>>$ERRORLOG

#Se copian los directorios que se van a guardar en un directorio temporal
for DIR in $ORIG
do
cp –Rp $DIR $TMPDIR/ 2>>$ERRORLOG
done

#Se comprimirá el backup realizado y se guardara en la carpeta definitival
cd $TMPDIRPARENT
tar zcvf $DATE.tar.gz $DATE/
2>>$ERRORLOG
mv $DATE.tar.gz $BACKUPDIR 2>>$ERRORLOG

#Se controla la retención del backup en el disco
cd $BACKUPDIR
BCKCOUNT=
`ls *.tar.gz | wc -w`
if `
test $BCKCOUNT –gt $RETENCION 2>>$ERRORLOG `
then
TRASHFILE=
`ls *.tar.gz | head –n 1 2>>$ERRORLOG`
rm $TRASHFILE 2>>$ERRORLOG
fi

#Se eliminan los temporales generados
rm –rf $TMPDIR

#Se avisa el estado del proceso si fue bueno o erroneo
if `test –s $ERRORLOG `
then
OUTPUT=”-------- ERROR: MIRE $ERRORLOG PARA LOS DETALLES------------“
else
OUTPUT=”-------- BACKUP REALIZADO A SATISFACCIÓN ----------“
fi

echo $OUTPUT

Como root se guarda el archivo en la carpeta /usr/local/sbin y se le dan los permisos correspondientes para su ejecución

Si se desea generar automáticamente se edita el archivo crontab de la siguiente forma:
local@localhost ]#vi contab

y en el archio se coloca la siguiente linea

0 5 * * * /usr/local/sbin/archivo.sh 1>/dev/null

Esto realizara el backup todos los días a las 5 de la madrugada