Está en la página 1de 3

Realizar copias de seguridad del sistema con TAR

Realizar copias de seguridad de nuestro sistema es prácticamente fundamental. Nunca se sabe


lo que puede pasar o qué puede fallar. Desde un descuido del usuario a una actualización que nos
tira abajo el sistema y no somos capaces de solucionar. Es en ese momento en el que tener una
copia de seguridad nos salva la vida.
En Linux el sistema más utilizado para realizar copias de seguridad o backups del sistema es el
de utilizar scripts, que a su vez utilizan tar, para tener guardado nuestro sistema en un solo archivo
y listo para ser restaurado si fuera necesario.
En esta entrada os explicaré el sistema que utilizo, es un script que encontré por la red hace
tiempo y lo modifiqué un poco a mi gusto. Sirve para realizar un backup completo del sistema cada
1 de mes, otro backup completo cada Domingo y backups diarios incrementales (solo de los
cambios realizados desde el último bakcup completo). Todo esto automático gracias a Cron.
Lo primero que tenemos que hacer es tener claro donde guardaremos nuestras copias de
seguridad y que directorios que queremos resguardar, ya que deberemos editar un par de líneas
del script. Esto es muy sencillo y basta con mirar el script que uso para que veáis qué cambios
debéis hacer. Copiad lo siguiente a un archivo de texto cambiando los valores pertinentes:
#!/bin/bash
# full and incremental backup script
#Cambiar estos 5 valores para adecuarlo al sistema
MAQUINA=debian # nombre de la máquina
DIRECTORIOS="/bin /boot /emul /etc /initrd /lib /opt /root
/sbin /srv /usr /var" #directorios a respaldar
BACKUPDIR=/home/Backups # Directorio donde se guarda el backup
(debe existir)
FECHADIR=/home/Backups # Directorio donde se guarda la fecha del
último backup completo
TAR=/bin/tar # localización del ejecutable tar (se localiza con
whereis tar)
# A partir de aquí no hace falta tocar nada
PATH=/usr/local/bin:/usr/bin:/bin
DSEM=`date +%a` # Día de la semana (por ej. mié)
DMES=`date +%d` # Día del mes (por ej. 06)
DM=`date +%d%b` # Día y mes (por ej. 06jun)
# Cada 1 de mes se hace un backup completo
# Cada Domingo se hace otro backup completo sobrescribiendo el
backup del domingo anterior
# Cada día se realiza un backup incremental. Cada backup
incremental sobrescribe
# el backup incremental del mismo día de la semana anterior.
# "NUEVO" coge la fecha del backup completo de cada domingo para
realizar un backup de los archivos creados a partir de la fecha de
"NUEVO".
# Backup mensual completo - sobrescribe el del mes anterior
if [ $DMES = "01" ]; then
$TAR -cf $BACKUPDIR/$MAQUINA-$DM.tar $DIRECTORIOS
fi
# Backup semanal completo
if [ $DSEM = "dom" ]; then
AHORA=`date +%d-%b`
# Actualizar fecha del backup completo
echo $AHORA > $FECHADIR/$MAQUINA-fecha-backup-completo
$TAR -cf $BACKUPDIR/$MAQUINA-$DSEM.tar $DIRECTORIOS
# Backup incremental diario - sobrescribe el de la semana anterior
else
# Obtener fecha del último backup completo
NUEVO="--newer=`cat $FECHADIR/$MAQUINA-fecha-backup-completo`"
$TAR $NUEVO -cf $BACKUPDIR/$MAQUINA-$DSEM.tar $DIRECTORIOS
fi

Cuando tengamos el script retocado a nuestro gusto le damos permisos de ejecución y lo


copiamos a la carpeta /usr/bin, por ejemplo:
chmod +x backup-script
cp backup-script /usr/bin/
Después bastará con hacer que el script se ejecute cada día mediante Cron, por ejemplo a las 3 de la
mañana, para que no nos moleste mientras trabajamos con el Pc. Como root hacemos:
crontab -e
y dentro escribimos:
0 3 * * * /usr/bin/backup-script
Ya solo queda un apunte. Para determinar la fecha del último backup completo y poder hacer así el
backup incremental, se utiliza un fichero de texto con la fecha en cuestión, que se actualiza cada
Domingo. La primera vez que se ejecute el script se creará un backup completo, sea el día que
sea, ya que ese archivo todavía no existe. Lo que debemos hacer es ejecutar el script la primera vez
para realizar el backup completo y después crear este fichero con la fecha actual. Podemos crear
dicho fichero fácilmente así:
echo `date +%d-%b` > $FECHADIR/$MAQUINA-fecha-backup-completo
Sustituyendo $FECHADIR/$MAQUINA por la ruta pertinente.
Si queremos restaurar el sistema lo único que debemos hacer es entrar a un terminal, loguearnos
como root y, situados en el directorio raíz, introducir este comando:
cd /
tar -xf ruta_al_backup_que_queremos_resutaurar.tar
Quizá es más recomendable realizarlo desde un Live CD para evitar problemas con ficheros del
sistema que estén siendo usados en ese momento.
Eso es todo, así tendremos un sistema de copias de seguridad bastante completo.