- ENTRADA 049 -

Backups incrementales con tar


Dele al Sr. Richard Sorge solo los últimos informes.


--- Fecha: dom 02 oct 2025 22:20:18 CEST


Tienes muchos archivos en los que trabajas normalmente y haces cambios en varios de ellos. Quieres hacer copias de seguridad y haces copias de todo, es lo más seguro, pero son tantos archivos que te tiras mucho tiempo haciendo las copias de seguridad.

Si tienes 80 Gb de datos, y haces 5 copias, tendrás 5 archivos de 80 Gb cada vez que hagas copias, es decir, 400 Gb, cuando seguramente solo hayas modificado archivos por valor de 2 Mb, ¿vale la pena?


Alguien te dice que se puede acortar tiempo y espacio haciendo copias solo de los archivos que han cambiado, ahorrando tiempo y espacio en disco. Si has modificado un total de 2 Mb, por las cinco copias que hagas, pasas a tener 90 Gb en vez de los 400 Gb de antes.

Pues eso es una copia o backup incremental, que almacena solo las diferencias con respecto al backup anterior.


Si haces una copia completa hoy, mañana haces otra solo de los cambios, y pasado mañana solo de las de mañana.


NOTA: Cuando haces muchos copias incrementales, llega un momento que la fiabilidad de si se han cambiado o no los archivos, y cuantas veces se ha hecho, puede verse comprometida, por lo que es muy recomendable hacer "copias completas" cada cierto tiempo que tú elijas, por ejemplo, una por mes.


Para estas copias usaré el comando tar.



Creando la copia completa


El comando "tar" (TApe aRchive) es muy poderoso. Se utiliza para crear, mantener, modificar y extraer archivos que están empaquetados, y opcionalmente, comprimidos.


El ejemplo es el siguiente:



La orden es la siguiente:


tar -cvzf copia-full_$(date +%d-%m-%Y).tar.gz -g copia.snap cosas/

Fíjate que he añadido la opción -g y un nombre, en este caso, copia.snap, para saber que es el snapshot y no liarme (tú puedes llamarlo como quieras).

Este archivo almacenará metadatos que ayudará a la herramienta tar a determinar qué archivos han cambiado desde el último incremental, cuáles se han agregado, o cuales se han eliminado, de modo que tar podrá generar el siguiente backup incremental solamente de los cambios del anterior.


NOTA: Si se elimina el snapshot, tar volverá a crear una copia completa.


Para acordarme del comando, uso una regla mnemotécnica que me dice lo siguiente (quédate con las mayúsculas):


"C"rea de forma "V"erbosa y comprimida en "Z"ip el "F"ichero copia-full_02-11-2025.tar.gz con el contenido del directorio cosas.



Copia incremental


Han pasado dos días y he modificado algunos archivos, así que voy a hacer la primera copia incremental, llamada copia01.

¿Cómo sabe "tar" lo que tiene que copiar y lo que no?, pues para eso se va al archivo snapshot y lee la información. Todo lo que esté igual lo dejará y solo copiará lo que haya cambiado.


La orden para hacer esto es la misma que la anterior, cambiando el nombre del backup:


tar -cvzf copia01_$(date +%d-%m-%Y).tar.gz -g copia.snap cosas/

Ahora se ha creado la copia llamada copia01_04-11-2025.tar.gz y verás que la salida del comando indica lo que ha copiado. Si no ha copiado nada, solo aparecerá el directorio "cosas". Si se modificaron archivos, aparecerán en el listado.


NOTA: El archivo snapshot se reescribe a cada copia con los datos nuevos, ya que estamos haciendo copias incrementales de la copias anterior, que es copia de la anterior, que es copia de la anterior... que es copia de la completa. De ahí a que antes dijera que cada cierto tiempo es aconsejable empezar de nuevo desde una copia completa.



Analizar el contenido de una copia


Tar tiene una opción de verificación o análisis de lo que ha copiado. Para ello se usa la opción -t


tar -tvvGf copia-full_02-11-2025.tar.gz

drwxr-xr-x Moribundo/Moribundo         0 2025-11-02 13:52 cosas/
Y cosas/casa.txt
Y cosas/perro.pdf
Y cosas/azul.jpg

He añadido más opción de información o verbosa (vv) y le digo que lea el snapshot (G). Aparece un listado del contenido, y si te fijas, los archivos van precedidos de una "Y". Esto indica lo siguiente:



En la copia completa siempre aparece "Y" en todos los archivos porque, al ser la primera, tar indica que se añadieron esos archivos.


Voy a ver qué cambios han habido en la primera copia incremental que hice dos días después:


tar -tvvGf copia01_04-11-2025.tar.gz

drwxr-xr-x Moribundo/Moribundo         0 2025-11-04 12:20 cosas/
Y cosas/casa.txt
N cosas/perro.pdf
Y cosas/azul.jpg

Ahí veo que han habido cambios en casa.txt y azul.jpg, y solo esos archivos son los que lleva la copia. El archivo perro.pdf no ha sido copiado al no haber cambiado, es decir, el tarball contiene solo los cambios respecto del último incremental.


NOTA: Si se me ocurriera hacer un incremental que parta del incremental anterior solamente, deberé renombrar el snapshot original, porque sobreescribirá el archivo snapshot y se perderán los cambios del nivel anterior.



Restaurar


Ahora quiero restaurar las copias, o llevarlas a otro equipo de trabajo. Como en las copias incrementales solo están los archivos que han sufrido modificaciones, debo primero restaurar la copia completa y luego las incrementales sucesivas. En el ejemplo, primero la del día 02-11-2025 y luego la del 04-11-2025


tar -xvGf copia-full_02-11-2025.tar.gz
tar -xvGf copia01_04-11-2025.tar.gz

Esto lo que hace es restaurar la copia completa e ir completándola con las incrementales, leyendo para eso el archivo snapshot, indicado con la G.


Y nada más, es un procedimiento a tener en cuenta que ahorra recursos, tanto en tiempo de procesado como en espacio de disco.



Tags #tar #backup



◄ Listado de noticias

◄◄ Inicio



/blog/