Script para backups
Bueno, como ya sabeis que a veces posteo a pares, aqui va el script que uso para hacer copias de seguridad. Vale que no hace todas las comprobaciones que deberia hacer, pero buen, funciona. Lo tengo como una tarea cron para ejecutarse todos los días a una hora. Además, uso una partición que no monto automáticamente al arrancar por si acaso. Tiene varios modos de funcionamiento:
- -t Total, hace backups de todos los archivos listados en el archivo al que apunta $FICHEROS.
- -n Total, hace backups de todos los archivos listados en el archivo al que apunta $FICHEROS menos de los listados en el archivo al que referencia $EXCLUIDOS. Es util por si, como yo, tienes un directorio de mails que ocupan una burrada.
- -i Incremental, hace backups de todos los archivos modificados desde el último backup normal.
- Sin parametros Asi lo lanzo desde cron, la idea es, si es primer domingo de mes, total; el resto de los domingos, normal; y, el resto de los días, incremental.
#!/bin/bash
FICHEROS="/home/usuario/bk/cfg/backup.txt"
EXCLUIDOS="/home/usuario/bk/cfg/exclusions.txt"
PARTICION="/home/usuario/bk"
BACKUPS="/home/usuario/bk/BakUps/"
incremental(){
#Usamos algo mas de 24horas (1440 minutos) por si acaso
let MIN=24*60*$1+30
find `cat $FICHEROS` \! \( -type d -a \! -empty \) -a -mmin -$MIN -print0|tar -cpzf $BACKUPS/BakUp-date +%d-%m-%y`-incrementalar.gz --null -T - -X $EXCLUIDOS
echo Toca incremental
}
normal(){
tar -cpzf $BACKUPS/BakUp-`date +%d-%m-%y`-normal.tar.gz -T $FICHEROS -X $EXCLUIDOS
echo Toca normal
}
total(){
tar -cpzf $BACKUPS/BakUp-`date +%d-%m-%y`-full.tar.gz -T $FICHEROS
echo Toca total
}
if mount $PARTICION; then
if [ $# -eq 1 ];then
case $1 in
"-n")normal;;
"-i")incremental `date +%u`;;
"-t")total;;
*) echo Parametro desconocido. No use parametros o use -t para completo, -n para normal o -i para incremental;;
esac
else
DIASEM=`date +%u`
case $DIASEM in
[1-6]) incremental $DIASEM
;;
7) DIAMES=`date +%d`
if [ $DIAMES -le 07 ];then
total
else
normal
fi
;; #domingo
esac
fi
umount $PARTICION
else
echo No se ha podido montar la particion
fi
Información que he usado: Linux Backup, Manual de Find y Rediris.










