Cómo Archivar Archivos y Directorios Usando tar en Linux

  • Categoría de la entrada:Noticias

INDICE

  1. Ordenadores
  2. Sistemas Operativos
  3. Linux
  4. Cómo Archivar Archivos y Directorios Usando tar en Linux

Libro Relacionado

Linux All-In-One para tontos, 6ª Edición

Por Emmett Dulaney

En sistemas Linux, puede usar el comando tar para archivar archivos en un dispositivo, como un disco duro o una cinta. El programa tar en Linux crea un archivo de almacenamiento que puede contener otros directorios y archivos y (opcionalmente) comprime el archivo para un almacenamiento eficiente. A continuación, el archivo comprimido se escribe en un dispositivo especificado o en otro archivo. Muchos paquetes de software se distribuyen en forma de un archivo tar comprimido.

La sintaxis de los comandos del programa tar en Linux es la siguiente:

opciones de alquitrán fuente de destino

Aquí, las opciones generalmente se especifican mediante una secuencia de letras individuales, cada una de las cuales especifica lo que hace tar; el destino es el nombre del dispositivo de copia de seguridad; y el origen es una lista de nombres de archivos o directorios que denotan los archivos que se van a incluir en la copia de seguridad.

Realizar copias de seguridad y restaurar un archivo de un solo volumen en Linux

Suponga que desea realizar una copia de seguridad del contenido del directorio /etc/X11 en un disco duro. Inicie sesión como root y escriba el siguiente comando, donde xxx representa su unidad:

tar zcvf /dev/xxx /etc/X11

El programa tar muestra una lista de nombres de archivos a medida que cada archivo se copia en el archivo tar comprimido. En este caso, las opciones son zcvf, el destino es /dev/xxx (la unidad), y la fuente es el directorio /etc/X11 (que implica todos sus subdirectorios y sus contenidos). Puede utilizar un comando tar similar para realizar una copia de seguridad de los archivos en una cinta sustituyendo la ubicación del disco duro por la del dispositivo de cinta, como /dev/st0 para una unidad de cinta SCSI.

Esta tabla define algunas opciones de tar comunes en Linux.

Opciones comunes de tarOpciónHace lo siguientecCrea un nuevo archivo comprimido.fEspecifica el nombre del archivo comprimido o dispositivo en el siguiente campo de la línea de comandos.MSespecifica un archivo multivolumen.tLista el contenido del archivo.vMuestra mensajes verbosos.xExtrae archivos del archivo.zComprime el archivo comprimido tar usando gzip.

Para ver el contenido del archivo tar que se crea en la unidad, escriba el siguiente comando (sustituyendo xxx por el dispositivo de la unidad):

tar ztf /dev/xxx

Verá una lista de nombres de archivo (cada uno comenzando con /etc/X11) indicando lo que hay en la copia de seguridad. En este comando tar, la opción t lista el contenido del archivo tar.

Para extraer los archivos de una copia de seguridad tar, siga estos pasos mientras esté conectado como root:

  1. Cambie el directorio a/tmp escribiendo este comando:cd /tmpEste paso es donde puede practicar la extracción de los archivos de la copia de seguridad tar. Para una copia de seguridad real, cambie el directorio a una ubicación apropiada. (Típicamente, usted escribe cd /.)
  2. Escriba el siguiente comando: tar zxvf /dev/xxxEste comando tar utiliza la opción x para extraer los archivos del archivo almacenado en el dispositivo (reemplazar xxx con la unidad).

Ahora, si comprueba el contenido del directorio /tmp, notará que el comando tar crea un árbol de directorios etc/X11 en /tmp y restaura todos los archivos del archivo tar en ese directorio. El comando tar elimina los nombres de archivo principales / de los nombres de archivo en el archivo comprimido y restaura los archivos en el directorio actual. Si desea restaurar el directorio /etc/X11 desde el archivo comprimido, utilice este comando (sustituyendo xxx por el nombre del dispositivo):

tar zxvf /dev/xxx -C /C /C

La opción -C cambia los directorios al directorio especificado (en este caso, el directorio raíz de /) antes de hacer el tar; el / al final del comando denota el directorio donde desea restaurar los archivos de copia de seguridad.

En sistemas Linux, puede utilizar el comando tar para crear, ver y restaurar un archivo comprimido. Puede almacenar el archivo comprimido en un archivo o en cualquier dispositivo que especifique con un nombre de dispositivo.

Copia de seguridad y restauración de un archivo multivolumen en Linux

A veces, la capacidad de un único medio de almacenamiento es menor que el espacio total de almacenamiento necesario para almacenar el archivo.

En este caso, puede utilizar la opción M para un archivo multivolumen, lo que significa que el archivo puede abarcar varias cintas. Tenga en cuenta, sin embargo, que no puede crear un archivo comprimido de varios volúmenes, por lo que deberá eliminar la opción z.

La M le dice a tar que cree un archivo multivolumen. El comando tar le pide un segundo medio cuando el primero está lleno. Saque el primer medio e inserte otro cuando vea la siguiente indicación:

Prepara el volumen 2 y pulsa Return:

Al pulsar Intro, el programa de alquitrán continúa con el segundo medio. Para archivos más grandes, el programa tar continúa solicitando nuevos medios según sea necesario.

Para restaurar desde este archivo multivolumen, escriba cd /tmp para cambiar el directorio a /tmp. (El directorio /tmp se utiliza con fines ilustrativos, pero tiene que utilizar un directorio real cuando restaura archivos desde el archivo). Luego escriba (reemplazando xxx con el dispositivo que está usando)

tar xvfM /dev/xxx

El programa de alquitrán le pide que alimente el material según sea necesario.

Utilice el comando du -s para determinar la cantidad de almacenamiento que necesita para archivar un directorio. Escriba du -s /etc para ver el tamaño total del directorio /etc en kilobytes, por ejemplo. Aquí está la salida típica de ese comando:

35724 /etc

La salida resultante muestra que el directorio /etc requiere al menos 35,724 kilobytes de espacio de almacenamiento para realizar la copia de seguridad.

Copia de seguridad en cintas para sistemas Linux

Aunque hacer una copia de seguridad en cintas es tan simple como usar el nombre correcto del dispositivo en el comando tar, tiene que conocer algunos matices del dispositivo de cinta para usarlo bien. Cuando utiliza tar para realizar una copia de seguridad en el dispositivo denominado /dev/st0 (la primera unidad de cinta SCSI), el dispositivo de cinta rebobina automáticamente la cinta cuando el programa tar termina de copiar el archivo comprimido en la cinta. El dispositivo /dev/st0 se llama dispositivo de rebobinado de cinta porque rebobina cintas por defecto.

Si su cinta puede contener varios gigabytes de datos, es posible que desee escribir varios archivos tar – uno tras otro – en la misma cinta. (De lo contrario, gran parte de la cinta puede quedar vacía.) Si planea hacerlo, su dispositivo de cinta no puede rebobinar la cinta después de que termine el programa de alquitrán. Para ayudarle con escenarios como este, varios dispositivos de cinta de Linux no se rebobinan. El dispositivo de cinta SCSI sin rebobinar se llama /dev/nst0. Utilice este nombre de dispositivo si desea escribir un archivo comprimido tras otro en una cinta.

Después de cada archivo, el dispositivo de cinta sin rebobinar escribe un marcador de fin de archivo (EOF) para separar un archivo del siguiente. Use el comando mt para controlar la cinta; puede moverse de un marcador al siguiente o rebobinar la cinta. Cuando termine de escribir varios archivos comprimidos en una cinta usando el nombre de dispositivo /dev/nst0, por ejemplo, puede forzar la cinta a rebobinar con el siguiente comando:

mt -f /dev/nst0 rebobinar

Después de rebobinar la cinta, puede utilizar el siguiente comando para extraer archivos del primer archivo comprimido al directorio actual del disco:

tar xvf /dev/nst0

Después de eso, debe moverse más allá del marcador EOF hasta el siguiente archivo comprimido. Para ello, utilice el siguiente comando mt:

mt -f /dev/nst0 fsf 1

Este comando posiciona la cinta al principio del siguiente archivo comprimido. Ahora usa el comando tar xvf de nuevo para leer este archivo.

Si guarda varios archivos comprimidos en una cinta, deberá realizar un seguimiento de los mismos. El orden de los archivos puede ser difícil de recordar, por lo que puede ser mejor simplemente guardar un archivo por cada cinta.

Realización de copias de seguridad incrementales en Linux

Suponga que usa alquitrán para hacer una copia de seguridad del disco duro de su sistema en una cinta. Dado que la creación de una copia de seguridad completa puede llevar bastante tiempo, no es conveniente repetir esta tarea todas las noches. (Además, sólo un pequeño número de archivos puede haber cambiado durante el día.) Para localizar los archivos que necesitan copia de seguridad, puede usar el comando find para listar todos los archivos que han cambiado en las últimas 24 horas:

find / -mtime -1 -type f -print

Este comando imprime una lista de los archivos que han cambiado en el último día. La opción -mtime -1 significa que desea que los archivos que se modificaron por última vez hace menos de un día. Ahora puede combinar este comando find con el comando tar para hacer una copia de seguridad de los archivos que han cambiado en el último día:

tar cvf /dev/st0 `find / -mtime -1 -type f -print`

Cuando coloca un comando entre comillas simples, el shell ejecuta ese comando y coloca la salida en ese punto en la línea de comandos. El resultado es que el programa tar sólo guarda los ficheros modificados en el archivo comprimido. Este proceso le ofrece una copia de seguridad incremental de sólo los archivos que han cambiado desde el día anterior.

Realización de copias de seguridad automatizadas en Linux

En sistemas Linux, puede usar crontab para configurar tareas recurrentes (llamadas tareas cron). El sistema Linux realiza estas tareas a intervalos regulares. Hacer una copia de seguridad de su sistema es un buen uso de la función de crontab. Suponga que su estrategia de copia de seguridad es la siguiente:

  • Cada domingo a la 1:15 a.m., su sistema realiza una copia de seguridad de todo el disco duro de la cinta.
  • De lunes a sábado, el sistema realiza una copia de seguridad incremental a las 3:10 a.m. guardando sólo los archivos que han cambiado durante las últimas 24 horas.

Para configurar esta programación de copias de seguridad automatizadas, inicie sesión como root y escriba las siguientes líneas en un archivo llamado copias de seguridad (suponiendo que esté utilizando una unidad de cinta SCSI):

15 1 * * 0 tar zcvf /dev/st0 /10 3 * * 1-6 tar zcvf /dev/st0 `find / -mtime -1 -type f -print`

A continuación, envíe este plan de trabajo utilizando el siguiente comando crontab:

copias de seguridad de crontab

Ahora está listo para una copia de seguridad automatizada. Todo lo que tiene que hacer es colocar una cinta nueva en la unidad de cinta todos los días. Recuerde también dar a cada cinta una etiqueta apropiada.