← Terminal y Línea de Comandos en Linux Bloque 3 · Manipular archivos y directorios · Tema 15 de 43

Tema 15

Empaquetar y comprimir

Un proyecto son cientos de archivos repartidos en directorios. Para enviarlo, respaldarlo o publicarlo hace falta convertirlo en una sola pieza, y conviene que ocupe poco. En Linux esas son dos tareas distintas, a cargo de programas distintos que se combinan: uno reúne, otro reduce. Entender esa separación es lo que vuelve transparentes los nombres como proyecto.tar.gz y las letras de tar -czvf, que en el tema 4 desciframos con el manual y que ahora vamos a usar.

1. Dos operaciones, no una

En otros sistemas, un único programa toma una carpeta y entrega un archivo .zip, más chico. Esa acción encierra dos trabajos que nada obliga a hacer juntos:

OperaciónQué haceEl resultado…Herramienta
EmpaquetarReúne muchos archivos y directorios en un solo archivo.Ocupa lo mismo, o algo más.tar
ComprimirReescribe un archivo de manera que ocupe menos.Sigue siendo un solo archivo.gzip, xz, y otros

Unix los separa, fiel a su costumbre de que cada programa haga una sola cosa. tar sabe juntar y no sabe comprimir. gzip sabe comprimir, pero solo un archivo por vez: no entiende de directorios. Combinados, hacen el trabajo completo.

Los dos pasos: tar reúne un directorio con sus archivos en un solo archivo punto tar, del mismo tamaño; gzip lo comprime y produce un archivo punto tar punto gz, más chico tar gzip practica/ informe.txt notas.txt tareas.txt fotos/ practica.tar un solo archivo 20 KB practica.tar.gz un solo archivo, comprimido: 5 KB
Primero se reúne, después se reduce. La doble extensión .tar.gz cuenta la historia en orden.

En la práctica tar llama al compresor por su cuenta, y todo se hace con una línea. Pero el archivo resultante es, literalmente, un paquete tar comprimido con gzip, y saberlo explica todo lo que sigue.

Para los ejemplos usamos una zona de trabajo en /tmp, con copias de los archivos de práctica:

terminal
$ mkdir /tmp/zona
$ cd /tmp/zona
$ cp ~/practica/*.txt .
$ ls -l
total 24
-rw-rw-r-- 1 ana ana 12813 oct 12 15:02 informe.txt
-rw-rw-r-- 1 ana ana    18 oct 12 15:02 notas.txt
-rw-rw-r-- 1 ana ana    70 oct 12 15:02 tareas.txt

2. gzip: comprimir un archivo

Empezamos por la mitad más simple. gzip recibe un archivo y lo comprime:

terminal, en /tmp/zona
$ gzip informe.txt
$ ls -l
total 16
-rw-rw-r-- 1 ana ana 4786 oct 12 15:02 informe.txt.gz
-rw-rw-r-- 1 ana ana   18 oct 12 15:02 notas.txt
-rw-rw-r-- 1 ana ana   70 oct 12 15:02 tareas.txt

El archivo pasó de 12813 bytes a menos de 5000. Y hay un detalle que sorprende: el original desapareció. gzip no crea una versión comprimida al lado: reemplaza el archivo por otro con el mismo nombre más la extensión .gz. No se pierde nada, porque la operación es exactamente reversible:

terminal
$ gzip -l informe.txt.gz            # cuánto se redujo
         compressed        uncompressed  ratio uncompressed_name
               4786               12813  62.8% informe.txt
$ zcat informe.txt.gz | head -n 2   # leerlo sin descomprimirlo
# Network services, Internet style
#
$ gunzip informe.txt.gz             # descomprimir: vuelve informe.txt, idéntico
ComandoEfecto
gzip archivoComprime, reemplazando el archivo por archivo.gz.
gunzip archivo.gzDescomprime, reemplazando el .gz por el original. Equivale a gzip -d.
gzip -k archivoComprime y conserva el original. La k es de keep.
gzip -l archivo.gzMuestra los tamaños y el porcentaje de reducción.
gzip -9 archivoCompresión máxima, más lenta. La escala va de -1, rápida, a -9; por defecto, -6.
zcat, zless, zgrepComo cat, less y grep, sobre un archivo comprimido.

La compresión es sin pérdida: al descomprimir se recupera el original byte por byte. Funciona eliminando redundancia, y de ahí una consecuencia que conviene ver: donde no hay redundancia, no hay nada que ganar.

terminal
$ gzip -k notas.txt
$ ls -l notas.txt*
-rw-rw-r-- 1 ana ana 18 oct 12 15:02 notas.txt
-rw-rw-r-- 1 ana ana 48 oct 12 15:02 notas.txt.gz
$ rm notas.txt.gz

El archivo «comprimido» es más grande que el original. Todo archivo .gz lleva un encabezado con datos propios, y en un texto de 18 bytes ese agregado pesa más que cualquier ahorro. Comprimir archivos diminutos no tiene sentido.

3. Los otros compresores

gzip es el más difundido, y no el único. Todos se usan de la misma manera, y difieren en el equilibrio entre cuánto reducen y cuánto tardan:

CompresorExtensiónDescomprimirReducciónVelocidadUso típico
gzip.gzgunzipBuenaRápidoEl de uso general. Está en todos los sistemas.
bzip2.bz2bunzip2MejorLentoArchivos antiguos; hoy se usa poco.
xz.xzunxzLa mejor de los tresLento al comprimir, rápido al descomprimirDistribución de software: se comprime una vez y se descarga miles.
zstd.zstunzstdEntre gzip y xzMuy rápidoRespaldos y paquetes modernos.

Los cuatro comparten las opciones: -k para conservar el original, -d para descomprimir, -1 a -9 para el nivel, -v para informar. Aprendido uno, se saben todos.

El criterio de elección depende de qué escasea. Si importa el tiempo, como en una copia de seguridad diaria, gzip o zstd. Si importa el tamaño, porque el archivo se va a guardar años o a descargar muchas veces, xz. Y si importa que el destinatario pueda abrirlo sin instalar nada, gzip.

4. tar: la gramática

tar viene de tape archive, archivo en cinta. Nació en los años setenta para volcar árboles de directorios en cintas magnéticas, donde los datos se escriben uno detrás de otro, y de ahí su formato: una simple sucesión de archivos, cada uno precedido de una ficha con su nombre, permisos, dueño y fecha. El resultado se llama, en la jerga, un tarball.

Su sintaxis es de las que señalamos como excepciones en el tema 3. Toda invocación tiene la misma forma: una operación, modificadores, y el nombre del archivo tar.

anatomía de un comando tar
tar -czvf practica.tar.gz practica
     ││││ │               │
     ││││ │               └─ qué se empaqueta
     ││││ └─ el archivo tar: el valor de la opción f
     │││└─ f: «el archivo tar es el siguiente»
     ││└─ v: ir mostrando cada archivo procesado
     │└─ z: comprimir con gzip
     └─ c: la operación, crear
LetraClaseSignificado
cOperación. Una, y solo una.create: crear un archivo tar.
tlist: mostrar su contenido, sin extraer.
xextract: extraer.
fArchivo. Casi siempre presente.file: el nombre del archivo tar es la palabra que sigue.
vModificadorverbose: listar lo que se procesa.
zCompresiónCon gzip.
jCon bzip2.
JCon xz.

Las tres operaciones son todo lo que hay que recordar: crear, listar, extraer. Lo demás se añade según el caso.

La f necesita una explicación, porque es la fuente del error más común. Es una opción que lleva un valor, y el valor es la palabra siguiente. Por eso, en un grupo de letras, la f va al final, pegada al nombre del archivo. Sin f, tar intenta usar una unidad de cinta, herencia de su origen.

5. Crear un archivo tar

Empaquetamos el directorio de práctica. Conviene situarse en el directorio que lo contiene; la razón está en la sección 8.

terminal
$ cd ~
$ tar -cf /tmp/zona/practica.tar practica          # solo empaquetar
$ tar -czf /tmp/zona/practica.tar.gz practica      # empaquetar y comprimir
$ ls -l /tmp/zona/practica.tar*
-rw-rw-r-- 1 ana ana 20480 oct 12 15:10 /tmp/zona/practica.tar
-rw-rw-r-- 1 ana ana  5012 oct 12 15:10 /tmp/zona/practica.tar.gz

Dos observaciones sobre los tamaños. El .tar sin comprimir pesa más que la suma de los archivos, que era de unos 13 KB: a cada archivo se le antepone su ficha, y todo se redondea a bloques de tamaño fijo. Confirma que tar no comprime. Y el .tar.gz es cuatro veces más chico.

El orden de los argumentos es el contrario al de cp, y hay que cuidarlo:

Primero el archivo que se crea, después lo que se guarda

En tar -czf destino.tar.gz origen, lo que sigue a la f es el archivo de salida. Si se invierten y el primer nombre es un archivo existente, tar lo sobrescribe sin preguntar, con un paquete que contiene lo otro. Antes de pulsar Enter, comprueba que lo que sigue a la f termina en .tar o .tar.gz.

Se pueden indicar varios orígenes, y también comodines: tar -czf textos.tar.gz *.txt notas guarda los archivos de texto del directorio y el directorio notas completo. Los directorios se guardan siempre con todo su contenido, sin opción adicional.

tar conserva de cada archivo sus permisos, fechas y enlaces simbólicos. Esa fidelidad es lo que lo hace adecuado para respaldos y para distribuir software, y la diferencia principal con zip.

6. Listar antes de extraer

La operación t muestra el contenido de un archivo tar sin extraer nada:

terminal
$ cd /tmp/zona
$ tar -tf practica.tar.gz
practica/
practica/notas.txt
practica/fotos/
practica/informe.txt
practica/tareas.txt
$ tar -tvf practica.tar.gz
drwxrwxr-x ana/ana           0 2026-10-12 14:35 practica/
-rw-rw-r-- ana/ana          18 2026-10-12 10:32 practica/notas.txt
drwxrwxr-x ana/ana           0 2026-10-12 10:40 practica/fotos/
-rw-rw-r-- ana/ana       12813 2026-10-12 10:41 practica/informe.txt
-rw-rw-r-- ana/ana          70 2026-10-12 13:20 practica/tareas.txt

Con v, el listado se parece al de ls -l: permisos, dueño y grupo, tamaño, fecha y ruta. No hizo falta la z: al leer, tar reconoce solo el tipo de compresión.

Listar antes de extraer es una costumbre que conviene hacer automática, porque responde tres preguntas que importan:

PreguntaPor qué importa
¿Todo está dentro de un único directorio?Si no lo está, la extracción desparrama los archivos en el directorio actual, mezclados con lo que haya.
¿Hay nombres que ya existen aquí?Se sobrescribirán sin aviso.
¿Es lo que esperaba?Un archivo descargado puede no contener lo que su nombre promete.

Para un archivo grande, el listado se envía a less, o se cuenta con wc -l: tar -tf archivo.tar.gz | wc -l dice cuántos elementos contiene.

7. Extraer

La operación x recrea los archivos. Por defecto lo hace en el directorio de trabajo, no en el lugar de donde salieron ni junto al archivo tar:

terminal, en /tmp/zona
$ mkdir restaurado
$ tar -xvf practica.tar.gz -C restaurado
practica/
practica/notas.txt
practica/fotos/
practica/informe.txt
practica/tareas.txt
$ ls restaurado/practica
fotos  informe.txt  notas.txt  tareas.txt

La opción -C, mayúscula, indica dónde extraer; el directorio debe existir. Es más seguro que cambiar de lugar con cd y confiar en acordarse de dónde se está.

ComandoEfecto
tar -xf archivo.tar.gzExtrae todo en el directorio actual.
tar -xf archivo.tar.gz -C destinoExtrae todo en destino.
tar -xf archivo.tar.gz practica/notas.txtExtrae solo ese elemento, con la ruta tal como aparece en el listado.
tar -xf archivo.tar.gz --wildcards "*.txt"Extrae solo lo que coincide con el patrón.
tar -xkf archivo.tar.gzNo reemplaza los archivos que ya existen.
La extracción sobrescribe sin preguntar

Si en el destino hay archivos con los mismos nombres, se reemplazan por los del paquete. Extraer un respaldo antiguo encima del directorio de trabajo actual es la manera más simple de perder los cambios de una semana. Lo prudente es extraer siempre en un directorio nuevo y vacío, mirar el resultado, y recién entonces mover lo que haga falta.

8. Las rutas dentro del archivo

tar guarda cada archivo con la ruta exactamente como se la escribió al crear el paquete, y la reproduce al extraer. De eso depende qué directorios aparecerán en el destino:

Se creó conDentro quedan rutas comoAl extraer aparece
cd ~ ; tar -cf p.tar practicapractica/notas.txtUn directorio practica.
cd ~/practica ; tar -cf p.tar ../notas.txtLos archivos sueltos, sin directorio que los contenga.
tar -cf p.tar /home/ana/practicahome/ana/practica/notas.txtTres niveles de directorios: home/ana/practica.

La primera forma es la buena: un paquete que al extraerse crea un solo directorio con todo dentro. Por eso nos situamos en el directorio padre antes de crearlo. Un paquete del segundo tipo, que esparce su contenido donde se lo abra, es una descortesía clásica; listar antes permite detectarlo.

En la tercera fila se ve una medida de seguridad. Con una ruta absoluta, tar quita la barra inicial y avisa:

terminal
$ tar -cf etc.tar /etc/hostname
tar: Removing leading `/' from member names

No es un error. Si guardara la barra, extraer ese paquete escribiría en /etc/hostname, el archivo real del sistema, sin importar dónde se lo abriera. Sin ella, se recrea un etc/hostname inofensivo dentro del directorio de trabajo.

Para obtener rutas limpias sin moverse, la opción -C sirve también al crear: le dice a tar que cambie de directorio antes de leer.

terminal: lo mismo que en la sección 5, desde cualquier lugar
$ tar -czf practica.tar.gz -C ~ practica           # «ve a ~, y guarda practica»

9. Opciones que conviene conocer

OpciónEfecto
--exclude="patrón"Deja fuera lo que coincide. Puede repetirse.
-aAl crear, elige el compresor según la extensión del nombre.
--zstdComprime con zstd.
--strip-components=1Al extraer, quita el primer nivel de directorios de cada ruta.
-rAgrega archivos a un tar existente. Solo si no está comprimido.
-pAl extraer, restaura los permisos exactos.
ejemplos de uso (el directorio «proyecto» es hipotético)
$ tar -czf proyecto.tar.gz --exclude="*.log" --exclude="node_modules" proyecto
$ tar -caf practica.tar.xz -C ~ practica           # -a: por la extensión, usa xz

--exclude es la más útil. Un proyecto real contiene archivos que no tiene sentido respaldar: registros, temporales, dependencias que se pueden volver a descargar. El patrón va entre comillas, como en find, para que llegue a tar sin que la shell lo expanda, y debe escribirse antes de los orígenes.

-a evita recordar qué letra corresponde a cada compresor: se escribe el nombre con la extensión deseada, y tar hace lo que corresponde.

Verás a menudo las opciones escritas sin guion, como tar czf. Es la forma original del comando, y funciona igual.

10. Leer las extensiones

Con lo anterior, cualquier nombre de archivo comprimido se lee de derecha a izquierda como una secuencia de operaciones a deshacer:

ExtensiónQué esSe crea conSe extrae con
.tarUn paquete, sin comprimir.tar -cftar -xf
para todos
.tar.gz, .tgzUn paquete comprimido con gzip.tar -czf
.tar.bz2, .tbz2Un paquete comprimido con bzip2.tar -cjf
.tar.xz, .txzUn paquete comprimido con xz.tar -cJf
.tar.zstUn paquete comprimido con zstd.tar --zstd -cf
.gz, .xz, .bz2, sin .tarUn solo archivo comprimido.gzip, xz, bzip2gunzip, unxz, bunzip2
.zipUn paquete comprimido, en otro formato.zip -runzip

La columna de la derecha es la buena noticia: para extraer no hay que saber con qué se comprimió. tar -xf lo detecta y sirve para todos. La distinción que sí hay que hacer es la de la penúltima fila: un .gz sin .tar no es un paquete, y se abre con gunzip.

Cuando la extensión falta o no es de fiar, file, del tema 12, dice qué es el archivo mirando su contenido.

11. zip y unzip

El formato .zip empaqueta y comprime a la vez, y es el que entienden sin instalar nada Windows y macOS. En Linux se maneja con dos comandos; si faltan, se instalan con sudo apt install zip unzip.

terminal, en /tmp/zona
$ zip -r practica.zip restaurado/practica
  adding: restaurado/practica/ (stored 0%)
  adding: restaurado/practica/notas.txt (stored 0%)
  adding: restaurado/practica/fotos/ (stored 0%)
  adding: restaurado/practica/informe.txt (deflated 63%)
  adding: restaurado/practica/tareas.txt (deflated 4%)
$ unzip -l practica.zip
Archive:  practica.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2026-10-12 14:35   restaurado/practica/
       18  2026-10-12 10:32   restaurado/practica/notas.txt
        0  2026-10-12 10:40   restaurado/practica/fotos/
    12813  2026-10-12 10:41   restaurado/practica/informe.txt
       70  2026-10-12 13:20   restaurado/practica/tareas.txt
---------                     -------
    12901                     5 files
ComandoEfecto
zip archivo.zip a.txt b.txtCrea un zip con esos archivos.
zip -r archivo.zip directorioIncluye el directorio con todo su contenido. Sin -r, solo se guarda el nombre del directorio, vacío.
unzip -l archivo.zipLista el contenido.
unzip archivo.zipExtrae en el directorio actual. A diferencia de tar, pregunta antes de sobrescribir.
unzip archivo.zip -d destinoExtrae en destino.

El orden de los argumentos de zip es el de tar: primero el archivo que se crea. Las diferencias de fondo entre los dos formatos son estas:

.tar.gz.zip
CompresiónDel paquete entero, como un todoDe cada archivo por separado
Tamaño resultanteMenor, sobre todo con muchos archivos parecidosAlgo mayor
Extraer un solo archivoHay que recorrer el paqueteInmediato
Permisos, dueños y enlacesSe conservanParcialmente
Se abre sin instalar nada enLinux, macOSWindows, macOS, Linux

De ahí el criterio. Entre sistemas Linux, para respaldos y para distribuir software, .tar.gz o .tar.xz. Para enviar archivos a alguien que usa otro sistema, .zip.

12. Qué se comprime y qué no

La compresión aprovecha las repeticiones. Los datos que las tienen se reducen mucho; los que ya fueron comprimidos por su propio formato, casi nada:

Tipo de archivoReducción habitualPor qué
Texto, código, registros, CSV, HTML, JSONDel 60 al 90 %Las mismas palabras y estructuras se repiten constantemente.
Bases de datos, documentos sin comprimirAltaMucha estructura repetida.
Programas ejecutablesDel 40 al 60 %Redundancia moderada.
Imágenes JPG y PNG, audio MP3, video MP4Menos del 5 %Su formato ya incluye compresión.
Archivos .zip, .gz, .docx, .pdfCasi nulaYa están comprimidos.

Dos conclusiones prácticas. Los registros del sistema, que son texto muy repetitivo, se reducen a una décima parte: por eso /var/log está lleno de archivos .gz. Y comprimir una colección de fotos o de videos gasta tiempo de procesador para no ahorrar nada: en ese caso alcanza con tar -cf, sin compresor, solo para reunirlos.

Comprimir dos veces tampoco sirve. Un .gz dentro de un .zip no es más chico; puede ser algo más grande.

13. Una copia de seguridad completa

Reunimos todo en la tarea más común: respaldar un directorio en un archivo con fecha, verificarlo y comprobar que se puede restaurar.

  1. Crear el paquete, con la fecha en el nombre y rutas relativas. crear
  2. Verificar que se puede leer y que contiene lo esperado. listar
  3. Probar la restauración en un directorio aparte. extraer
  4. Comparar lo restaurado con el original. comprobar
  5. Guardar el paquete en otro dispositivo. resguardar
terminal
$ cd /tmp/zona
$ tar -czf practica-$(date +%F).tar.gz -C ~ practica
$ ls -lh practica-*
-rw-rw-r-- 1 ana ana 4,9K oct 12 15:30 practica-2026-10-12.tar.gz
$ tar -tzf practica-2026-10-12.tar.gz | wc -l
5
$ mkdir prueba
$ tar -xf practica-2026-10-12.tar.gz -C prueba
$ diff -r ~/practica prueba/practica               # sin salida: son iguales

La primera línea usa la sustitución de comandos que mencionamos en el tema 9: la shell reemplaza $(date +%F) por la salida de ese comando, la fecha en formato año-mes-día. Ese formato tiene una virtud: los respaldos de distintos días quedan ordenados por fecha en cualquier listado alfabético.

diff -r compara dos directorios archivo por archivo, y no escribe nada cuando son idénticos; lo estudiamos en el tema 31.

Los pasos tres y cuatro son los que casi nadie hace, y los que distinguen un respaldo de una esperanza. Un paquete que nunca se probó a restaurar puede estar incompleto, dañado o mal armado, y eso se descubre el día que hace falta. El quinto paso también es parte de la definición: una copia que está en el mismo disco que el original no protege contra la falla del disco.

14. Los errores habituales

SíntomaCausaSolución
Aparece un archivo llamado z, y el paquete no se creó donde se esperaba.Se escribió tar -cfz: la f tomó como nombre la letra siguiente.La f siempre al final del grupo: -czf.
tar: Cowardly refusing to create an empty archiveFalta indicar qué empaquetar.Añadir los orígenes después del nombre del archivo tar.
tar: Removing leading `/' from member namesSe usó una ruta absoluta.No es un error. Para evitar el aviso, usar -C y rutas relativas.
gzip: stdin: not in gzip formatSe indicó z al extraer un archivo que no está comprimido con gzip.Quitar la letra del compresor: tar -xf lo detecta.
Los archivos aparecieron mezclados con los del directorio actual.El paquete no tenía un directorio que lo contuviera todo.Listar antes, y extraer con -C en un directorio nuevo.
El .zip contiene un directorio vacío.Faltó la -r en zip.zip -r.
Se sobrescribió un archivo que no era un paquete.Se invirtió el orden: destino y origen.Primero el archivo que se crea.

El segundo mensaje es célebre por su tono: tar «se niega cobardemente» a crear un archivo vacío. Es de los pocos rastros de humor en los mensajes de error de Unix.

Y la referencia rápida, que se reduce a tres líneas:

Quiero…Comando
Crear un paquete comprimidotar -czf paquete.tar.gz directorio
Listar su contenidotar -tf paquete.tar.gz
Extraerlotar -xf paquete.tar.gz
Extraerlo en otro lugartar -xf paquete.tar.gz -C destino
Comprimir un solo archivogzip archivo, o gzip -k archivo
Descomprimirlogunzip archivo.gz
Crear un zipzip -r paquete.zip directorio
Extraer un zipunzip paquete.zip -d destino

La zona de trabajo se puede eliminar con rm -r /tmp/zona, o dejar que desaparezca al reiniciar. El directorio de práctica no se modificó.

Con este tema termina el tercer bloque. Sabemos crear, copiar, mover, borrar, leer, editar, enlazar y empaquetar archivos. En todos los listados apareció una columna que leímos solo por encima: la de los permisos, con su dueño y su grupo. El cuarto bloque está dedicado a ella, y empieza en el tema 16 por el principio: quiénes son los usuarios y los grupos de un sistema.

15. Resumen

16. Preguntas de repaso

Intenta responder cada una antes de abrir la respuesta.

1. ¿Qué diferencia hay entre empaquetar y comprimir?

Empaquetar reúne muchos archivos y directorios en un solo archivo, sin reducir el tamaño. Comprimir reescribe un archivo para que ocupe menos.

2. Después de ejecutar gzip datos.csv, ¿qué archivos hay?

Solo datos.csv.gz. gzip reemplaza el original por la versión comprimida, salvo que se use -k.

3. ¿Por qué un archivo de 18 bytes ocupa más después de comprimirlo?

Porque el formato .gz agrega un encabezado y datos de control, que en un archivo tan chico pesan más que lo que se ahorra.

4. ¿Qué significan las letras c, t y x de tar?

Son las tres operaciones: crear un archivo tar, listar su contenido y extraerlo.

5. ¿Qué hace cada letra de tar -czvf copia.tar.gz docs?

c crea, z comprime con gzip, v muestra cada archivo procesado, y f indica que el archivo tar es el nombre que sigue: copia.tar.gz. docs es lo que se empaqueta.

6. ¿Por qué la f debe ir al final del grupo de letras?

Porque lleva un valor: toma como nombre del archivo tar lo que tiene inmediatamente después. En -cfz tomaría la z.

7. ¿Por qué un archivo .tar sin comprimir pesa más que la suma de sus archivos?

Porque tar antepone a cada archivo una ficha con sus datos, y completa cada uno hasta un tamaño de bloque fijo.

8. ¿Por qué conviene listar un paquete antes de extraerlo?

Para saber si todo está dentro de un único directorio, si hay nombres que coinciden con archivos existentes, que serían sobrescritos, y si el contenido es el esperado.

9. ¿Dónde extrae tar -xf los archivos, y cómo se cambia?

En el directorio de trabajo. Con -C destino se indica otro directorio, que debe existir.

10. ¿Qué significa el aviso «Removing leading `/' from member names»?

Que se indicó una ruta absoluta y tar le quitó la barra inicial, para que al extraer no se escriba sobre los archivos reales del sistema. No es un error.

11. ¿Qué diferencia hay entre empaquetar con tar -cf p.tar practica desde el directorio padre y con tar -cf p.tar . desde dentro?

En el primer caso las rutas empiezan con practica/, y al extraer aparece un único directorio. En el segundo, los archivos quedan sueltos en el lugar donde se extraiga.

12. ¿Qué diferencia hay entre datos.gz y datos.tar.gz?

El primero es un solo archivo comprimido, que se abre con gunzip. El segundo es un paquete de varios archivos, comprimido, que se abre con tar -xf.

13. ¿Cuándo conviene .zip y cuándo .tar.gz?

.zip, para intercambiar con personas que usan Windows u otros sistemas. .tar.gz, entre sistemas Linux, para respaldos y distribución, porque conserva permisos y enlaces y comprime mejor.

14. ¿Tiene sentido comprimir un directorio de fotos JPG?

No para ahorrar espacio: el formato JPG ya está comprimido y la reducción es mínima. Sí puede servir empaquetarlo, con tar -cf, para tener un solo archivo.

15. ¿Qué hace falta para confiar en una copia de seguridad?

Haber comprobado que el paquete se puede leer y restaurar, comparando lo restaurado con el original, y guardarlo en un dispositivo distinto del que contiene los datos.

Para practicar

  1. En /tmp/zona, comprime una copia de informe.txt con gzip -k, con bzip2 -k y con xz -k, y compara los tres tamaños con ls -l.
  2. Prueba gzip -1 y gzip -9 sobre una copia de /usr/share/dict/words, si existe, o de cualquier archivo de texto grande. ¿Cuánto cambia el tamaño?
  3. Empaqueta ~/practica de las tres maneras de la tabla de la sección 8 y compara los listados con tar -tf.
  4. Crea un paquete de /etc con tar -czf /tmp/zona/etc.tar.gz -C / etc 2>/dev/null. ¿Cuántos elementos contiene? ¿Cuánto pesa?
  5. Del paquete anterior, extrae solamente etc/hostname en un directorio nuevo.
  6. Lee un archivo del paquete sin extraerlo: tar -xOf etc.tar.gz etc/os-release. Busca en man tar qué hace la opción -O.
  7. Crea un directorio con archivos .txt y .log, y empaquétalo excluyendo los .log. Comprueba el resultado listando.
  8. Escribe a propósito tar -cfz prueba.tar.gz notas.txt en /tmp/zona. Mira qué archivos se crearon, explica por qué, y bórralos.
  9. Crea un .zip de un directorio sin la opción -r y otro con ella. Compara con unzip -l.
  10. Sigue los cinco pasos de la sección 13 con tu directorio ~/practica, y averigua con file qué dice el sistema sobre el paquete creado.