LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Sobre las copias de seguridad.

Dependiendo del objetivo que tengamos a la hora de crear una copia de seguridad de nuestros datos, deberemos de seguir una u otra estrategia. Si lo que queremos es realizar solamente una copia completa o parcial como algo puntual de nuestros datos, podremos usar el comando tar en su uso mas básico (opción 1) . En cambio si trabajamos con una gran cantidad de datos cambiantes y queremos seguir un control y respaldo de ellos de forma estricta por lo que pudiese ocurrir, podremos elegir la opción 2 de este tutorial.

 

1) Para la primera de las opciones bastaría con usar el comando tar o cpio en su uso normal para crear una full única:

  • Respaldar el directorio home de mi usuario (empaquetado y compresión) con tar:
$ tar -cpvzf mibackup.tar.gz /home/miusuario

Nota: Podemos usar -j para comprimir con bzip2 o -J para comprimir con xz (ambos suelen ofrecer mejor resultados que gzip, solo que este último es mas común)

Importante: Si empaquetamos utilizando rutas absolutas deberemos de tener cuidado a la hora de desempaquetar, podremos machacar los archivos del home. Es preferible usar ruta relativa ‘./*’ o bien aislar el desempaquetado en un directorio.

  • Respaldar mi directorio home con cpio.
$ find /home/miusuario | cpio -o | gzip /tmp/mibackup.cpio.gz

2) Para la segunda opción, seguramente una buena forma de respaldar los datos sería realizando copias diarias. Para no tener que realizar backups completos todos los días, algo que nos llevaría mucho tiempo y un consumo elevado de espacio en el disco*, usaremos el comando tar con sus opciones -g o -N para crear backups incrementales o diferenciales respectivamente. Un ejemplo sería crear una copia full (fullbackup) de todo el directorio o dispositivos un determinado día de la semana (o del mes), por ejemplo un Lunes y el resto de la semana (Martes, Miércoles, Jueves y Viernes) realizar copias incrementales o diferenciales. Otra estrategia a seguir es la de combinar los 3 tipos de backups. Veremos esto mas adelante.

* Estos factores estarán determinados por el tamaño de los archivos a respaldar.

Backups diferenciales e incrementales

Los backups diferenciales copian todo el contenido cambiante basándose en una copia full anterior. Imaginemos que hemos realizado una copia full de un directorio un Lunes, y el Martes realizamos una copia diferencial de ese mismo directorio, hasta aquí a penas existe diferencia entre el backup diferencial y el backup incremental. Pero el Miércoles volvemos a hacer otro backup diferencial del directorio, esta copia ya tendrá los cambios del Martes mas los cambios del Miércoles por lo que su tamaño irá creciendo con respecto vayamos haciendo otras copias los próximos días (Jueves y Viernes).

En cambio, los backups incrementales siguen otro método. Lo que hacen es depender directamente de su copia anterior, es decir si tenemos una full realizada el Lunes y al día siguiente (Martes) se realiza un backup incremental, se guardarán los datos cambiantes entre el Lunes y el Martes hasta el momento de hacer la copia. Hasta aquí es similar al backup diferencial, pero la diferencia entra en juego al próximo día, es decir en la copia del Miércoles, donde la nueva copia incremental solo guardará las modificaciones realizadas desde el Martes hasta el Miércoles al momento de hacer el backup, por lo que el tamaño de este backup incremental será menor que el del diferencial del mismo día.

La ventaja de la copia diferencial radica a la hora de recuperar los datos, pero el ahorro de espacio en disco es menor. Si queremos volver a los datos del Miércoles pasado, deberemos de restaurar la copia full del Lunes y la diferencial del Miércoles. Por contra para recuperar los mismos datos mediante copias incrementales, deberemos de restaurar la full del Lunes, acto seguido la incremental del Martes y por último el backup incremental del Miércoles.

Combinar los tres tipos de backups: Comentábamos al inicio la posibilidad de combinar los tres tipos de copias. Esto es útil si en vez de crear una full todas las semanas, la creásemos únicamente el primer día del mes. En un caso hipotético de que el mes empezara en Lunes podemos entonces realizar un full backup el día 1 del mes (Lunes), el Martes, Miércoles, Jueves y Viernes creamos incrementales. El siguiente Lunes creamos una diferencial* y volveremos a crear incrementales los siguientes días. Al siguiente Lunes volvemos a realizar un backup diferencial y repetimos está técnica hasta final de mes. Esta estrategia de backups nos permite restaurar el sistema a un determinado día desempaquetando la full del primer Lunes del mes y luego dependiendo de la semana, desempaquetaremos la diferencial del Lunes de esa semana y posteriormente las incrementales. Así no tenemos que desempaquetar la full del Lunes e ir restaurando una a una las copias incrementales hasta el día al que queremos volver (imaginar que este día es el día 21, deberíamos de restaurar la full mas 20 backups incrementales!!)

*Importante: El comando tar aquí nos limita un poco el proceso (al menos hasta el punto al que he podido llegar). Si hacemos una diferencial ese Lunes, esta contemplará todos los cambios desde el Lunes pasado hasta el momento de crear el diferencial, PERO, cuando el Martes volvamos a crear una incremental (como se ha propuesto en el ejemplo), esta incremental tendrá aparte de los cambios del Martes, los que ya tiene la diferencial del Lunes, es decir, que de alguna manera duplicamos datos en esta copia puntual.

Una ventaja o inconveniente (según se mire) de combinar diferenciales e incrementales, es que si por ejemplo tenemos una full del día 1, la incremental del día 2 tiene nuevos archivos, la diferencial del día 3 contiene los archivos del día 2 y los del día 3, luego el día 4 eliminamos archivos y añadimos otros nuevos y hacemos una incremental, si queremos recuperar los eliminados, podremos volver a desempaquetar la diferencial del día 3. De no contar con ella no podríamos recuperarlos, ya que primero desempaquetaríamos la full del día 1, y luego las incrementales del día 2 y del día 4, en esta última no estarían los archivos que si había el día 3 (los cuales gracias a la backup diferencial SI podemos recuperarlos!!).

La desventaja es que a lo mejor estabas totalmente seguro de querer eliminarlos y cuando descomprimes la full y luego la diferencial, existen esos archivos que ya eliminaste.

Hacer backups incrementales con tar

  • Creamos el backup full del directorio que queremos respaldar (hay que usar la opción -g como indicamos):
$ tar -cpvzf "fullbackup_`date +%d%m%Y`.tgz" -g /home/nebul4ck/history/backup.snap /home/nebul4ck/recursos/*

Nota: Podemos crear mejor el backup moviéndonos hasta ./recursos e indicando en el comando tar la ruta relativa ‘./*‘. De la manera en la que lo hemos hecho deberemos de tener cuidado a la hora de desempaquetar. Si lo hacemos desde el directorio raíz machacaremos los archivos del home.

IMPORTANTE: El archivo backup.snap es el que guarda los metadatos que informan sobre los cambios que han ocurrido en el directorio. Si este archivo no existe se creará. Será el archivo que se lea cuando se haga el backup incremental. Si lo eliminamos, tar no encontrará información sobre los cambios realizados en el directorio, por lo que volverá a crear un full backup.

  • Ahora podremos crear el backup incremental del Martes, los cambios que hayamos hecho serán grabados en el archivo  backup.snap (snapshot).
$ tar -cpvzf "inc_backup_`date +%d%m%Y`.tgz" -g /home/nebul4ck/history/backup.snap /home/nebul4ck/recursos/*

Hacer backups diferenciales con tar

Para realizar backups diferenciales con tar usaremos su opción -N. Lo que nos permite esta opción es ordenar a tar que solo archive aquellos datos que han sido cambiados o agregados desde una determinada fecha, hasta la fecha de ejecución del comando. Por ejemplo imaginemos que la fecha del fullbackup es del Lunes 9 de Febrero del 2015 y hoy (día en el que realizamos el backup diferencial es Miércoles 11 de Febrero del mismo año), haremos lo siguiente:

  • Crear la copia full (la del día 9 de Febrero):
$ tar -cpvzf "fullbackup_`date +%d%m%Y`.tgz" /home/nebul4ck/recursos/*
  • Crear copia diferencial con los cambios ocurridos desde el Lunes 9 al Miércoles 11 del 2015
$ tar -cpvzf "dif1_backup_`date +%d%m%Y`.tar.gz" /home/nebul4ck/recursos/* -N 09-feb-15

Nota: Si volviésemos a crear otro diferencial el Jueves o el Viernes con fecha 09-feb-15, contendrían también los cambios reflejados en dif1 es por ello que su tamaño va aumentando en comparación con los backups incrementales.

 

Información: Existen dos entradas relacionadas con esta, una en la que se crea un shell script que automatiza este proceso y otra en la que se crea un usuario exclusivo para ejecutar dicho script y almacenar las copias, de manera que mantengamos una cierta privacidad en el proceso y en el almacenamiento de los backups.

  1. Shell script que realiza copias de seguridad y notifica vía email
  2. Crear usuario especifico para generar y guardar los backups

 Notas del autor:

 

Licencia Creative Commons
Backups con tar por nebul4ck se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Formulario de acceso

Filtro por Categorías