Script para realizar backup con tar

backup

En el mundo de los sistemas de información, es esencial contar con módulos de respaldos que permitan mantener un histórico de nuestros datos, ya sea configuraciones, base de datos, código fuente, entre otros datos importantes que requieran ser preservados.

En este post se describe, como por medio del comando tar y un par de comandos adicionales, se puede realizar un respaldo incremental.

¿ Porque incremental? Resulta que en la gran mayoría de los  casos, los respaldos totales, los datos que contienen, no sufren cambios con regularidad. Por lo que siempre tendremos “respaldos redundantes”.

Es por ello que en esta ocasión se presenta un pequeño script para realizar respaldos incrementales, así como el mantenimiento de los históricos de los respaldos y el traslado del respaldo a un servidor remoto.

#!/bin/bash
TIME=`date +%Y%m%d`
FILENAME=NombreArchivo-$TIME.tar.gz
SNAPNAME=NombreArchivo-`date +%m`.snap
SRCDIR=/ruta/a/respaldar
DESDIR=/ruta/donde/guardamos/el/respaldo
EXCLUDE=excluir/carpetas/que/no/deseamos/respaldar/*

cd DESDIR

#Recuperar espacio. Eliminamos los respaldos, con mas de 30 días de antigüedad.

find $DESDIR -type f -iname 'NombreArchivo-*' -mtime +30 -exec rm -vf {} \;

#Realizamos el respaldo con el comando tar,y a su vez se envía la salida del respaldo a un Log

/bin/tar -czf $DESDIR/$FILENAME -g $DESDIR/$SNAPNAME --exclude=$EXCLUDE $SRCDIR $DESDIR/Log_Respaldo.txt

#Guardamos el archivo snap, que es nuestro archivo de control, para manejar los incrementales.

/bin/cp $DESDIR/$SNAPNAME $DESDIR/NombreArchivo-$TIME.snap

#Copiamos el Respaldo en un Equipo Remoto.

/usr/bin/sshpass -p "ClaveEnTextoPlano" scp $DESDIR/NombreArchivo-$TIME.* usuario@IP:/home/soporte/Respaldo/

Es necesario hacer mención que es necesario tener instalado sshpass, para hacer uso del modo no Interactivo.

Imagen | Got Credit (CC BY 2.0)

7 thoughts on “Script para realizar backup con tar”

  1. tannhausser says:

    @anger 2×1 hoy, a este paso me retiro 🙂

    Muy interesante el script

  2. rlppt says:

    Me parece muy interesante el script, ahora tengo que ver como pasar la clave con sshpass pero que no sea en texto plano.

    Tambien una minuscula correccion, cuando haces ‘ cd DESDIR ‘ deberia ser ‘ cd $DESDIR ‘.

    Muy buen post.

  3. lucho says:

    y como lo desempaqueto luego???

    1. Anger says:

      Tenemos en lista de pendientes, como recuperar luego el respaldo. Pronto lo subimos.

  4. Marcelo Eduardo (@SantanderValdes) says:

    Lucho, la pregunta es para dejar los mis datos en los directorios verdad ? ya que para desempaquetar usas tar -xvf

    Tambien quede con esa duda. Saludos

  5. Marcelo Eduardo (@SantanderValdes) says:

    No llego el post, falto agregar en la ultima linea un scp a otro server de respaldos

    1. Anger says:

      Para enviar el respaldo a otro server!, hay esta la linea en el post.

      #Copiamos el Respaldo en un Equipo Remoto.

      /usr/bin/sshpass -p “ClaveEnTextoPlano” scp $DESDIR/NombreArchivo-$TIME.* usuario@IP:/home/soporte/Respaldo/

Deja un comentario