Automatizar Copias De Seguridad Con Crontab.

En este pequeño manual, lo que explicaré será como automatizar una serie de copias de seguridad completas e incrementales, con ayuda de dos grandes herramientas de los sistemas operativos basados en LINUX, llamados CRONTAB y SHELLSCRIPT.

backup-three-laptops-plugged-into-word

Descripción del script:

Una breve explicación del script realizado sería la siguiente, el script es ejecutado diariamente por el sistema gracias a crontab, al ser ejecutado el script, si fuese día 1 del mes, este haría una copia de seguridad completa en el directorio que nosotros determinamos, guardándolo con la fecha la cual se hizo la copia de seguridad, la siguiente copia se haría si fuese domingo, en caso de serlo, se haría una copia de seguridad completa de esa semana, guardando en el nombre el día de la semana el cual se ha hecho, la siguiente copia se realizaría diariamente y sería incremental, esta solo copiaría los datos modificados desde una fecha que le pasaremos desde un fichero.

SCRIPT:

Aquí muestro el script utilizado para realizar las copias de seguridad automatizadas:

#!/BIN/BASH

#copia completa cada mes, cada semana y incremental cada dia.

#Aquí introduzco el directorio del cual quiero hacer la copia

directorios=»/home/david»

#directorio donde voy a guardar la copia

backdir=»/copia»

fechadir=»/copia»

#calcular la fecha

diasemana=`date +%a` #dia de la semana eje: miercoles

diames=`date +%d` #dia del mes eje: 5 <– de marzo

diaymes=`date +%d%b` #dia y mes

############################## comienzan las copias ##########################

# REALIZA LA COPIA DE SEGURIDAD COMPLETA TODOS LOS DIA 1 DE CADA MES #

if [ «$diames» = «01» ]; then

# si es dia 1 del mes hace una copia completa de los directorios que queremos

# poniendo dia y mes en el nombre del .tar

tar -cf $backdir/ctm-$diaymes.tar $directorios

fi

## REALIZA LA COPIA DE SEGURIDAD COMPLETA TODOS LOS DOMINGOS.

if [ «$diasemana» == «dom» ]; then

# si el dia de la semana es domingo  hace la copia completa semanal.

fechahoy=`date +%d-%b`

# introduce el valor de la variable $fechahoy en un fichero llamado fecha-backup-completo

echo $fechahoy > $fechadir/fecha-backup-completo

tar -cd $backdir/cts-$diasemana.tar $directorios

## CREA LAS COPIAS INCREMENTALES CADA DIA.

else

## se le pasa al parametro –newer la fecha del ultimo backup

nuevo=»–newer=’cat $fechadir/fecha-backup-completo'»

## ejecutamos tar para que solo haga la copia incremental con las diferencias.

tar $nuevo -cf $backdir/inc-$diasemana.tar $directorios

fi

Crontab:

En mi caso el crontab lo he utilizado para que el script mostrado anteriormente lo ejecutase todos los días a las 17:07, aquí adjunto imagen del fichero modificado de crontab:

1

Prueba de Script:

Al ejecutar el script diariamente se creará una copia de seguridad diaria incremental:

2

Al ejecutar el script diariamente y el script filtrar que es domingo creará una copia de seguridad completa de la semana:

3

Al ejecutar el script diariamente y el script detectar que es día uno del mes, este hace una copia de seguridad completa del mes completo:

4

 

Todo el proceso de las pruebas, como las imágenes han sido comprobados, y capturadas por mi.

Saludos, David De Maya Merras, @DavidDeMaya

 

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.