El programa de archivo tar, acrónimo de Tape Archiver, es un sistema de al­ma­ce­na­mie­n­to de unidades de cinta basado en un antiguo método de backups o copias de seguridad que aún hoy sigue co­n­ve­n­cie­n­do a sus clientes. Aunque en la ac­tua­li­dad los usuarios pa­r­ti­cu­la­res apenas recurren a él, tar continúa co­n­si­de­rá­n­do­se la he­rra­mie­n­ta preferida de archivo en los sistemas UNIX. Además este ar­chi­va­dor de ficheros permite crear re­gu­la­r­me­n­te backups in­cre­me­n­ta­les de se­r­vi­do­res. Aquí no solo acla­ra­re­mos cómo usar el programa, sino que in­di­ca­re­mos también los comandos ne­ce­sa­rios para realizar backups con tar.

Backup cloud por Acronis
Protege tu in­frae­s­tru­c­tu­ra y reduce el tiempo de inac­ti­vi­dad
  • Copias de seguridad au­to­má­ti­cas y fácil re­cu­pe­ra­ción
  • Gestión y pla­ni­fi­ca­ción intuitiva
  • Pro­te­c­ción contra las amenazas basadas en IA
  • Incluye crédito inicial de 250 € el primer mes

¿Cómo funciona tar?

El programa de archivo tar se usa para el archivado de ficheros y carpetas en Linux y otros sistemas re­la­cio­na­dos y, aunque pueda resultar extraño, no ofrece función de comprimir en su forma estándar. Aun así, el programa es muy conocido, ya que permite combinar carpetas completas en un archivo único. Esta te­c­no­lo­gía va unida a la historia misma del programa, debido a que en un sistema de al­ma­ce­na­mie­n­to de unidades de cinta todos los datos se tra­n­s­fie­ren co­n­se­cu­ti­va­me­n­te a una cinta magnética, lo que explica el al­ma­ce­na­mie­n­to se­cue­n­cial y linear del formato tar, en el que los nuevos ficheros se adjuntan a un archivo principal. El archivo re­su­l­ta­n­te de la co­n­ca­te­na­ción de ficheros se conoce también como tarball (bola tar), pues estos están li­te­ra­l­me­n­te unidos unos a otros.

Si lo que se persigue es comprimir este tipo de archivo, es necesario combinar tar con gzip. Ambos programas se co­m­ple­me­n­tan pe­r­fe­c­ta­me­n­te, pues gzip solo puede comprimir archivos únicos. Por este motivo, siempre se emplea primero tar seguido de gzip u otro programa de co­m­pre­sión, de modo que una vez co­m­pri­mi­dos se generan archivos .tar.gz o .tzip.

¿Cómo instalar tar?

En Ubuntu, el programa de archivo tar viene pre­de­te­r­mi­na­do. Si usas otra di­s­tri­bu­ción de Linux o Unix, puedes instalar el programa con:

sudo apt-get install tar tar-doc

El paquete tar-doc es opcional y contiene do­cu­me­n­ta­ción sobre el programa de archivo.

¿Cómo utilizar tar?

Es posible utilizar tar siguiendo si­m­ple­me­n­te la sintaxis:

tar Option fichero

Entre las opciones en­co­n­tra­mos:

Opción De­s­cri­p­ción Pa­r­ti­cu­la­ri­dad
--help Muestra todas las opciones.
--version Muestra la versión en uso de tar.
-c Crea un archivo nuevo (create)
-d Compara los ficheros del el archivo y del sistema de ficheros. (diff)
-f Escribe un archivo en el fichero es­pe­ci­fi­ca­do o se­le­c­cio­na los datos del archivo dado. (file) Esta opción debes indicarla al final, ya que las entradas que le siguen se in­te­r­pre­tan como ficheros.
-z Comprime o de­s­co­m­pri­me el archivo di­re­c­ta­me­n­te con gzip. gzip debe de estar ya instalado.
-Z Comprime o de­s­co­m­pri­me el archivo di­re­c­ta­me­n­te con compress. compress debe estar ya instalado. Se debe prestar atención a la mayúscula.
-j Comprime o de­s­co­m­pri­me el archivo di­re­c­ta­me­n­te con bzip2. bzip2 debe estar ya instalado.
-J Comprime o de­s­co­m­pri­me el archivo di­re­c­ta­me­n­te con xz. xz debe estar ya instalado. Atención con la mayúscula.
-k Impide que los ficheros so­bre­s­cri­ban otros ficheros exi­s­te­n­tes al ex­trae­r­los del archivo.
-p Guarda los derechos de acceso en la ex­tra­c­ción.
-r Añade un fichero al archivo existente. (recreate) El fichero se concatena al anterior, lo que funciona solo si el archivo no se ha co­m­pri­mi­do.
-t Muestra el contenido de un archivo. (table)
-u Solo añade ficheros más recientes que sus versiones actuales en del archivo.
-v Muestra el proceso de archivo. (verbose)
-vv Muestra in­fo­r­ma­ción más detallada sobre el proceso de archivo. (very verbose)
-w Cada acción debe ser ra­ti­fi­ca­da.
-x Extrae ficheros del archivo. (extract) Los fichers pe­r­ma­ne­cen en el archivo.
-A Añade los ficheros que componen un archivo existente a otro. Se debe prestar atención a la mayúscula.
-C Muestra la ubicación en la que extraer los ficheros. Se debe prestar atención a la mayúscula
-M Crea, muestra o extrae un archivo múltiple. Se debe prestar atención a la mayúscula
-L Cambia el medio después de que el fichero tenga un de­te­r­mi­na­do tamaño. El tamaño se mide en kilobytes. Se debe prestar atención a la mayúscula.
-W Comprueba el archivo después de que se haya escrito. Se debe prestar atención a la mayúscula.
-P Archiva todos los ficheros del di­re­c­to­rio raíz. Se debe prestar atención a la mayúscula.
--exclude Excluye ficheros o carpetas. Se es­pe­ci­fi­ca después del comando de creación con --exclude=<fichero/carpeta>
-X Lee una lista con archivos excluidos. Requiere una lista creada con an­te­rio­ri­dad: -X <Lista>.list. Se debe prestar atención a la mayúscula.
-g Crea un registro de todas las carpetas incluidas las sumas de ve­ri­fi­ca­ción.

En la creación de los archivos tar también tienes la po­si­bi­li­dad de aplicar ca­ra­c­te­res comodín con un asterisco. Al crear un archivo con este programa, en primer lugar, hay que escribir las opciones, seguidas del nombre del archivo que se quiere crear y fi­na­l­me­n­te los ficheros y carpetas que este debe contener. En el siguiente ejemplo se crea un archivo (-c) con dos ficheros de texto, se comprime con gzip (-z) y se escribe en el archivo archiv.tar.gz (-f):

tar -czf archiv.tar.gz ejemplo_1.txt ejemplo_2.txt

Si quieres agrupar todos los archivos de texto de una carpeta en un archivo tar, utiliza el comodín co­rre­s­po­n­die­n­te:

tar -cf text_archiv.tar *.txt

También es posible adjuntar carpetas completas y su­b­ca­r­pe­tas en un archivo tar. En el ejemplo se almacena la /carpeta1 con todas las su­b­ca­r­pe­tas y los ficheros co­n­te­ni­dos en ellas excepto la su­b­ca­r­pe­ta /carpeta1/su­b­ca­r­pe­ta_x:

tar -cf archiv.tar --exclude="/carpeta1/subcarpeta_x" /carpeta_1

En el siguiente ejemplo puedes extraer (-x) el archivo co­m­pri­mi­do (-z) creado en el primer ejemplo en otra carpeta (-C):

tar -xzf archiv.tar.gz -C /home/ carpeta1/archiv_carpeta

Para añadir otro fichero a un archivo tar que no debe estar co­m­pri­mi­do, añade el siguiente comando:

tar -rf archiv.tar ejemplo_extra.txt

Los backups con tar

Los we­b­ma­s­te­rs se inclinan por usar tar para crear backups por dos motivos. Por un lado, la es­tru­c­tu­ra de carpetas no se modifica y, por otro, el alcance de las funciones del programa permite numerosos ajustes de precisión adi­cio­na­les, hecho evidente si se tienen en cuenta las numerosas opciones que se han de­s­glo­sa­do en el apartado anterior. A co­n­ti­nua­ción, te ex­pli­ca­re­mos cómo utilizar tar para crear backups completos y copias de seguridad in­cre­me­n­ta­les.

Creación de backups con tar

En toda es­tra­te­gia de seguridad es co­n­ve­nie­n­tes crear un script para copias de seguridad para proteger tu sistema en vez de tener que estar creando archivos de forma manual. Al au­to­ma­ti­zar el proceso es posible guardar más carpetas, co­m­pri­mi­r­las y tra­n­s­fe­ri­r­las a un sistema de al­ma­ce­na­mie­n­to externo. Para ello es im­po­r­ta­n­te tener au­to­ri­za­ción continua para escribir y leer en las carpetas co­rre­s­po­n­die­n­tes. En primer lugar, coloca en el di­re­c­to­rio principal una carpeta bin, si es que no la tienes todavía, y crea ahí el script. A co­n­ti­nua­ción se muestra un script de ejemplo que debes adaptar a tus ne­ce­si­da­des y a la es­tru­c­tu­ra de tus carpetas: 

#!/bin/bash
DATE=$(date +%Y-%m-%d-%H%M%S)
BACKUP_DIR="/carpetadestino /backup"
SOURCE="$HOME/carpetaorigen"
tar -cvzpf $BACKUP_DIR/backup-$DATE.tar.gz $SOURCE

Para que puedas entender pe­r­fe­c­ta­me­n­te el efecto de este script, te lo ex­pli­ca­mos línea por línea:

  1. La primera línea es la llamada shebang, encargada de compartir con el sistema operativo el in­té­r­pre­te que ha de usarse. En este caso concreto, se usa bash.

  2. Cada copia de seguridad creada con tar contiene un cro­no­se­lla­dor, necesario para que las copias de seguridad se puedan di­s­ti­n­guir unas de otras. Las variables muestran, por ejemplo, el formato año-mes-día-ho­ra­mi­nu­to­se­gu­n­do: 2017-09-07-152833.

  3. A co­n­ti­nua­ción determina en qué carpeta vas a crear la copia de seguridad y coloca “/” tras la última su­b­ca­r­pe­ta.

  4. En esta línea se indica qué carpeta o carpetas quieres insertar en el archivo, puesto que puede estar formado por más de una, siempre y cuando se separen con un espacio SOURCE="$HOME/ ca­r­pe­tao­ri­gen1 $HOME/ ca­r­pe­tao­ri­gen2 ". Como se puede observar, aquí no se incluye “/” al final de la carpeta, aunque sí hay que añadir un espacio antes de la comilla de cierre.

  5. La última línea del script contiene el comando tar:
    1. -cvzpf crea un archivo tar (-c), muestra el proceso de archivo (-v), se comprime con gzip (-z), guarda los derechos de acceso (-p) y todo se envía al siguiente archivo (-f). Es­pe­cia­l­me­n­te -v y –p son op­cio­na­les, esto es, puedes elegir entre otras opciones para crear tu copia de seguridad.

    2. $BACKUP_DIR/backup-$DATE.tar.gz da nombre a la carpeta ($BACKUP_DIR) y al fichero en el que ha de guardarse la copia de seguridad. En nuestro ejemplo sigue la es­tru­c­tu­ra que aparece a co­n­ti­nua­ción: en primer lugar, el nombre de la carpeta, seguido del nombre del archivo backup. Tras estos el cro­no­se­lla­dor actual y del formato. No olvides que, si optas por otro método de comprimir distinto, debes cambiar el formato del archivo y la opción del comando.

    3. Fi­na­l­me­n­te comunica a tar con la varibale $SOURCE qué es lo que se debe archivar. Ten en cuenta que con --exclude o –X puedes excluir aquellos archivos o carpetas que no quieres guardar en la copia de seguridad.
Consejo

En principio, en Linux y Unix no sirve de nada la extensión dada al archivo script, ya que los sistemas leen el tipo de archivo, co­m­pa­ra­n­do la es­tru­c­tu­ra de este con un archivo mágico (magic file), esto es, una base de datos que se en­cue­n­tran no­r­ma­l­me­n­te en /etc/magic. A pesar de todo, se ha ge­ne­ra­li­za­do indicar la extensión, pues le facilita al usuario una visión general.

Ahora guarda el archivo backup en la carpeta bin y añade su ruta a la variable PATH:

PATH=$PATH:$HOME/bin

El script de backup que acaba de ser creado todavía debe co­n­ve­r­ti­r­se en eje­cu­ta­ble:

chmod u+x $HOME/bin/backup

Para ello, puedes es­ta­ble­cer que solo tú puedas ejecutar el archivo (u), aunque también es posible traspasar estos derechos a un grupo (g), a otros (o) o a todos (a). Es en este momento cuando finaliza el proceso de creación y se puede proceder a ejecutar el script:

sudo backup

Si lo que quieres es volver a crear la copia de seguridad, esto es, extraer el archivo tar, solo debes escribir el siguiente comando:

tar -xzf backup.tar.gz -C /

El script crea una copia de seguridad completa, aunque hay que apuntar que esta elección no siempre es la más adecuada si se quiere proceder al al­ma­ce­na­mie­n­to de un servidor completo. Quizás es mejor pla­n­tear­se si un backup in­cre­me­n­tal con tar no se adecuaría mejor a tus intereses.

Nota

Cuando se crea un archivo con una ruta de archivos absoluta, tar muestra el siguiente aviso: “tar: elimina el carácter guía “/” del nombre de los elementos”. Esto no es un aviso de error, sino una in­di­ca­ción de seguridad en el re­bo­bi­na­do, pues tar convierte /home/su­b­ca­r­pe­ta en home/su­b­ca­r­pe­ta. Si al extraer el archivo no estás en la carpeta raíz, tar crea una nueva es­tru­c­tu­ra de carpetas, por ejemplo, /home/ su­b­ca­r­pe­ta /home/ su­b­ca­r­pe­ta, re­du­cie­n­do la po­si­bi­li­dad de que so­bre­s­cri­bas un sistema completo por error. Ten en cuenta que Unix no pregunta si se ha de so­bre­s­cri­bir. Si de verdad hay contenido que quieres sustituir, debes navegar primero en la carpeta raíz con la opción –P.

Backup in­cre­me­n­tal con tar

Es común que los we­b­s­ma­s­te­rs creen copias de seguridad pe­rió­di­ca­me­n­te para evitar la pérdida de datos. Si el sistema actual rechazara su servicio, lo pusiera en peligro o lo borrara, se puede recurrir a una versión funcional de la copia de seguridad. Cuanto mayor sea la re­gu­la­ri­dad con se es­ta­ble­cen los puntos de guardado, menor será la cantidad de datos perdidos si algo le ocurre al sistema. No obstante, si para ello realizas cada vez una copia de seguridad completa, esto es, archivas todos los datos del sistema, no solo será necesario mucho tiempo, sino también mucho espacio en la memoria. En su lugar es posible crear backups in­cre­me­n­ta­les con tar.

Todo backup in­cre­me­n­tal requiere un al­ma­ce­na­mie­n­to completo. Por ello, en primer lugar hay que archivar el sistema completo o la parte de él que se quiera guardar para después ir añadiendo con la copia de seguridad in­cre­me­n­tal úni­ca­me­n­te los archivos tar nuevos o mo­di­fi­ca­dos. De modo que, cuando se vuelva a ejecutar el backup, se requerirá la última copia completa junto con cada copia de seguridad in­cre­me­n­tal añadida tras esta, lo que conlleva un volumen de datos mucho menor, aunque exige un mayor coste en la re­s­tau­ra­ción. Si uno de los archivos se ha perdido, hoy en día mucho más im­pro­ba­ble que en los tiempos de la cinta magnética, el backup estará in­co­m­ple­to.

Creación de un backup in­cre­me­n­tal con tar

Con tar es posible crear copias de seguridad in­cre­me­n­ta­les de forma regular. También para ello hay que crear un script para backups propio con el que puedes es­ta­ble­cer, por ejemplo, que una vez al mes se haga una copia de seguridad completa y cada día una copia de seguridad in­cre­me­n­tal. Además, este script permite trasladar los backups antiguos re­gu­la­r­me­n­te a carpetas cla­si­fi­ca­das por fechas. Para ello se usa tar y también cron, un daemon o programa que actúa en segundo plano y permite eje­cu­cio­nes basadas en el tiempo de otros procesos. Este programa está por defecto en Ubuntu. A co­n­ti­nua­ción abre un pro­ce­sa­dor de textos y crea el script:

#!/bin/bash
BACKUP_DIR="/ carpetadestino /backup"
ROTATE_DIR="/ carpetadestino /backup/rotate"
TIMESTAMP="timestamp.dat"
SOURCE="$HOME/ carpetaorigen "
DATE=$(date +%Y-%m-%d-%H%M%S)
EXCLUDE="--exclude=/mnt/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/*"
cd /
mkdir -p ${BACKUP_DIR}
set -- ${BACKUP_DIR}/backup-??.tar.gz
lastname=${!#}
backupnr=${lastname##*backup-}
backupnr=${backupnr%%.*}
backupnr=${backupnr//\?/0}
backupnr=$[10#${backupnr}]
if [ "$[backupnr++]" -ge 30 ]; then
mkdir -p ${ROTATE_DIR}/${DATE}
mv ${BACKUP_DIR}/b* ${ROTATE_DIR}/${DATE}
mv ${BACKUP_DIR}/t* ${ROTATE_DIR}/${DATE}
backupnr=1
fi
backupnr=0${backupnr}
backupnr=${backupnr: -2}
filename=backup-${backupnr}.tar.gz
tar -cpzf ${BACKUP_DIR}/${filename} -g ${BACKUP_DIR}/${TIMESTAMP} -X $EXCLUDE ${SOURCE]

A co­n­ti­nua­ción te ex­pli­ca­mos este script para backups paso a paso:

  • En primer lugar debes volver a definir al in­té­r­pre­te.
  • A co­n­ti­nua­ción establece las variables. Aquí hay que añadir, además, una carpeta para la rotación de los backups con tar, esto es, un tipo de archivo de copias de seguridad, así como un archivo para el timestamp o cro­no­se­lla­dor.
  • En nuestro ejemplo mostramos que no siempre hay por qué añadir todas las carpetas en el archivo tar. De hecho, hemos escogido el contenido de las carpetas mnt, proc, sys y tmp y no las carpetas en sí mismas, de ahí que se use “*”, debido a que los datos en estas carpetas son te­m­po­ra­les o deben de ser creados en cada sistema.
  • Para que la ruta lo in­te­r­pre­te todo co­rre­c­ta­me­n­te, el script cambia a la carpeta raíz con cd /.
  • Con mkdir se crea la carpeta de la copia de seguridad si es que no se ha creado aún.
  • Es ahora cuando se leen todas las variables. Como se pretende numerar los backups co­rre­la­ti­va­me­n­te, el code block averigua el número del último, lo que ocurre cuando el script elimina los otros co­m­po­ne­n­tes del nombre del archivo.
  • Almacena solo 30 copias de seguridad al mismo tiempo y, una vez superada esta cantidad, el script las traslada a la carpeta de rotación. Esta se crea primero para después trasladar a ellas con mv todos los archivos que empiecen por b o t, li­mi­ta­ción que se explica al tener en cuenta que solo se in­tro­du­cen aquellos archivos marcados, estos son backup y timestamp. Fi­na­l­me­n­te, el script vuelve a es­ta­ble­cer el número del backup en 1, aunque si el script comprueba que todavía no se han creado 30 copias de seguridad, el número de archivo aumenta a 1 (++).
  • Ahora el script casi vuelve a deshacer lo que al principio había llevado a cabo, aunque el comando se ocupa de que el nombre del archivo vuelva a estar completo con el nuevo orden de números. 
  • Fi­na­l­me­n­te, el script ejecuta el comando tar. Al contrario que con el comando de una copia de seguridad completa, aquí se suma también la opción –g, que habilita el backup in­cre­me­n­tal. Además, tar lee el timestamp de cada archivo, lo compara con los datos guardados hasta el momento en timestamp.dat para así de­te­r­mi­nar los cambios que se han originado tras la última copia de seguridad, los cuales formarán parte del nuevo archivo.
Nota

Todas las copias de seguridad llevadas a cabo a diario son tra­s­la­da­das por el script cada mes a una nueva carpeta y de este modo se consigue que en la carpeta de backup original se en­cue­n­tren úni­ca­me­n­te los archivos más actuales. No obstante, no se incorpora ninguna función que limite el número de carpetas de archivo, por los que hay que borrarlas ma­nua­l­me­n­te.

Tras todo lo expuesto, el script para la creación de una copia in­cre­me­n­tal con tar debe estar ya preparado. Guarda los archivos como backup en la carpeta bin. También aquí hay que exportar la ruta y convertir el script en eje­cu­ta­ble.

PATH=$PATH:$HOME/bin
chmod u+x $HOME/bin/backup

En teoría ya debe ser posible iniciar el script para backups con sudo backup. La idea en la que se basan las copias de seguridad in­cre­me­n­ta­les es que estas permiten crear backups a diario en un proceso au­to­ma­ti­za­do, lo que se consigue con cron mediante la llamada crontab, una tabla dividida en siete campos:

Minutos Horas Días Mes Día de la semana Orden
(0-59) (0-23) (1-31) (1-12) (0-7)

En este campo se pueden in­tro­du­cir bien cifras según el marco de valores co­rre­s­po­n­die­n­te indicados en los pa­ré­n­te­sis, o bien un asterisco que indique que se es­ta­ble­cen todos los valores posibles. Además, la casilla de los días de la semana presenta una pa­r­ti­cu­la­ri­dad, pues permite es­ta­ble­cer si una orden ha de llevarse a cabo, por ejemplo, solo el lunes (1) o durante los días la­bo­ra­bles (1-5). El domingo tiene dos valores di­fe­re­n­tes, 0 o 7, ya que hay personas que empiezan la semana en este día y otras que la terminan aquí.

En la consola de línea de comandos abre el modo editor de cron con:

sudo crontab –e

Añade la siguiente línea:

30 7 * * * /home/bin/backup

Con esto hemos es­ta­ble­ci­do que se debe llevar a cabo un backup todos los días a las 7:30 a.m. y una vez al mes. Al guardar los cambios, el backup in­cre­me­n­tal está listo para usarse.

Nota

Cron, al igual que los se­r­vi­do­res web, solo funciona cuando el sistema está en marcha. Al instalar el script en tu ordenador o portátil para realizar la copia de seguridad, debes ase­gu­rar­te de que este di­s­po­si­ti­vo estará en fu­n­cio­na­mie­n­to todos los días es­ta­ble­ci­dos a la hora estimada. Si no es así, no se creará la copia de seguridad a menos que utilices el programa anacron, encargado de trasladar una tarea planeada para un momento en el que el sistema no esté fu­n­cio­na­n­do a otro en el que el di­s­po­si­ti­vo sí esté conectado.

Restaurar un sistema con un backup

Aunque no se le desea a nadie, puede ocurrir que tengas que restaurar el sistema. Por suerte, este proceso se lleva a cabo con relativa facilidad gracias a tar y para ello no se requiere un script adicional. No obstante, se necesita algo más que los comandos simples usados con los backups completos, pues va unido a la na­tu­ra­le­za misma de las copias de seguridad in­cre­me­n­ta­les que haya que extraer muchos archivos. Añade en la consola el siguiente comando:

BACKUP_DIR=/carpetadestino/backup
cd /
for archiv in ${BACKUP_DIR}/backup-*.tar.gz; do
tar -xpzf $archiv -C /
done
Nota

En la re­s­tau­ra­ción de un sistema con una copia de seguridad todas las carpetas y con ellas todos los ficheros im­po­r­ta­n­tes se so­bre­s­cri­ben.

Para que no tengas que extraer cada archivo tar de forma in­di­vi­dual, usa un ciclo for:

  1. En primer lugar establece la carpeta en la que se encuentra el backup.
  2. Con cd /cambia a la carpeta raíz para ase­gu­rar­te de que el archivo se extrae del lugar correcto.
  3. Inicia ahora un ciclo for. Este comando repite todas las acciones que se en­cue­n­tran entre do y done hasta que hayan pasado todas las po­si­bi­li­da­des. Para la es­pe­ci­fi­ca­ción del comando establece la ruta de tu copia de seguridad con un asterisco a modo de comodín, ya que deseas extraer todos los ficheros de archivo de la carpeta. 
  4. El comando tar se indica de la siguiente forma: extrae (-x) ma­n­te­nie­n­do los derechos de acceso (-p) y de­s­co­m­pri­me (-z) el archivo (-f $archiv) en la carpeta raíz (-C /).
  5. Con done establece el punto final del ciclo for.

Como al crear el archivo tar los backups se han enumerado co­rre­la­ti­va­me­n­te, también se eje­cu­ta­rán uno detrás de otro, empezando por el más antiguo. Para ello hay que tener en cuenta que en los archivos creados tras una copia de seguridad completa se en­cue­n­tran versiones nuevas de los ficheros co­n­te­ni­dos en ella. De modo que en el ciclo for primero se extraen las versiones antiguas para más tarde ser so­bre­s­cri­tas por las nuevas, pe­r­mi­tie­n­do que el sistema completo so­bre­s­cri­to con el backup contenga la última versión archivada de cada fichero.

La razón principal por la que se crean copias de seguridad in­cre­me­n­ta­les es para permitir la completa re­s­tau­ra­ción del sistema, aunque con un pequeño rodeo también es posible rescatar solo algunos de los ficheros, así como recuperar una versión anterior a la última creada:

BACKUP_DIR=/carpetadestino/backup
ls -l ${BACKUP_DIR}
for archiv in ${BACKUP_DIR}/backup-*tar.gz; do
tar -tzf $archiv | grep fichero-buscado;
done

También en los primeros casos se vuelve a recurrir al ciclo for, aunque este se usará pri­n­ci­pa­l­me­n­te para la búsqueda y no para la ex­tra­c­ción:

  1. Vuelve a definir la carpeta de la copia de seguridad.
  2. Con el comando ls se muestran todos los ficheros y carpetas co­n­te­ni­dos en la carpeta de la copia de seguridad. La opción –l pro­po­r­cio­na in­fo­r­ma­ción detallada.
  3. Abre un el ciclo for como ocurría al restaurar el archivo co­m­ple­ta­me­n­te.
  4. Las di­fe­re­n­cias con respecto al proceso anterior residen en las opciones del comando tar. En vez de crear (c) o extraer (x) un archivo, se solicita que se muestre el contenido del archivo tar (t) y se reenvía la salida con una barra vertical al comando grep, pues no se pretende buscar los ficheros pe­r­so­na­l­me­n­te. El comando busca en la salida o contenido del archivo los ficheros es­pe­cí­fi­cos buscados.
  5. Finaliza el ciclo for.

Ahora, el terminal muestra los ficheros buscados y pro­ba­ble­me­n­te algunos más, si has trabajado con ellos re­gu­la­r­me­n­te y aparecen en cada copia de seguridad in­cre­me­n­tal. Recuerda la ruta del fichero y crea un nuevo ciclo que se encargue de restaurar la última versión guardada.

for archiv in ${BACKUP_DIR}/backup-*.tar.gz; do
tar –xzf $archiv -C / carpetadestino/backup/archivo-buscado
done

Es en este momento cuando los ficheros se restauran en su lugar original, so­bre­s­cri­bie­n­do además las versiones po­s­te­rio­res, en caso de que las hubiera.

Ir al menú principal