-->

Compresores en Linux (gzip, bzip2, zip)

Objetivo:

Aprender a comprimir y descomprimir ficheros en Linux utilizando los compresores gzip, bzip2 y zip, comprender las diferencias entre ellos, y aprender a combinar la compresión con el comando tar para empaquetar y comprimir en un solo paso.

Escenario:

  • Herramientas: Terminal de Linux y un sistema Debian o basado en Debian.
  • Conceptos clave: gzip, gunzip, bzip2, bunzip2, zip, unzip, opción -k, opción -r, opción -l, tar czf.

Instrucciones:

Fase 1: Comprimir un único fichero con gzip

  • Abre una terminal y accede a tu directorio personal:
  • cd
  • Copia el fichero /etc/passwd a tu directorio actual:
  • cp /etc/passwd .
  • Renombra el fichero copiado para no confundirlo con otros:
  • mv passwd usuarios
  • Comprime el fichero con gzip:
  • gzip usuarios
  • Comprueba el resultado:
  • ls -ltr
  • Observa que se ha generado un fichero usuarios.gz y que el fichero original ha desaparecido.

Fase 2: Conservar el fichero original al comprimir

  • Comprime el fichero copiaficheros.tar creado en una práctica anterior, conservando el fichero original mediante la opción -k:
  • gzip -k copiaficheros.tar
  • Comprueba el resultado:
  • ls -ltr
  • Observa que en este caso, a diferencia del paso anterior, se conservan tanto el fichero original como el fichero comprimido copiaficheros.tar.gz.

Fase 3: Comprimir varios ficheros con gzip

  • Crea un nuevo directorio para trabajar con varios ficheros:
  • mkdir compresion
  • Accede al directorio recién creado:
  • cd compresion
  • Copia a este directorio todos los ficheros de /etc cuyo nombre empiece por p:
  • cp /etc/p* .
  • Comprueba los ficheros copiados:
  • ls -l
  • Comprime todos los ficheros del directorio con gzip:
  • gzip *
  • Comprueba el resultado:
  • ls -l
  • Observa que gzip genera un fichero comprimido independiente por cada fichero, en lugar de un único fichero conjunto.

Fase 4: Descomprimir ficheros con gunzip

  • Descomprime todos los ficheros del directorio:
  • gunzip *
  • Comprueba que los ficheros han recuperado su formato original:
  • ls -l

Fase 5: Consultar estadísticas de compresión con gzip -l

  • Comprime de nuevo todos los ficheros del directorio:
  • gzip *
  • Consulta las estadísticas de compresión de los ficheros:
  • gzip -l *
  • Observa el tamaño comprimido, el tamaño original y el porcentaje de compresión conseguido para cada fichero.

Fase 6: Comprimir y descomprimir con bzip2

  • Descomprime de nuevo los ficheros del directorio:
  • gunzip *
  • Comprime todos los ficheros utilizando bzip2:
  • bzip2 *
  • Comprueba el resultado:
  • ls -l
  • Observa la extensión que genera este compresor y compárala con la generada por gzip.
  • Descomprime los ficheros con bunzip2:
  • bunzip2 *

Fase 7: Comprimir con zip

  • Comprime todos los ficheros del directorio en un único fichero llamado copia.zip:
  • zip copia.zip *
  • Comprueba el resultado:
  • ls -l
  • Vuelve al directorio anterior y comprime de forma recursiva todo el contenido de tu directorio personal en un fichero llamado copiatotal.zip:
  • cd ..
    zip -r copiatotal.zip *

Fase 8: Descomprimir con unzip en otra ubicación

  • Accede al directorio de restauración creado en una práctica anterior y vacía su contenido:
  • cd /tmp/restore
    rm -rf *
  • Descomprime el fichero copiatotal.zip en este directorio, indicando la ruta completa donde se encuentra (sustituye la ruta por la de tu propio usuario):
  • unzip /home/usuario/copiatotal.zip
  • Comprueba que el contenido se ha extraído correctamente:
  • ls -l

Fase 9: Empaquetar y comprimir en un solo paso con tar

  • Desde tu directorio de restauración, crea un fichero tar comprimido directamente con la opción z, sin necesidad de comprimir por separado:
  • tar czf copia1.tar.gz *
  • Comprueba el resultado:
  • ls -ltr
  • Observa que se ha generado directamente el fichero comprimido copia1.tar.gz en un único comando.

Preguntas de reflexión:

  1. ¿Qué diferencia principal existe entre gzip y zip a la hora de trabajar con varios ficheros?
  2. ¿Qué ocurre con el fichero original al comprimirlo con gzip sin utilizar ninguna opción adicional?
  3. ¿Para qué sirve la opción -k del comando gzip?
  4. ¿Qué diferencia existe entre gzip y bzip2?
  5. ¿Qué comandos se utilizan para descomprimir ficheros comprimidos con gzip y con bzip2 respectivamente?
  6. ¿Qué información proporciona la opción -l del comando gzip?
  7. ¿Por qué se recomienda utilizar zip en lugar de gzip o bzip2 cuando los ficheros se van a compartir con usuarios de Windows?
  8. ¿Para qué sirve la opción -r del comando zip?
  9. ¿Qué ventaja tiene utilizar tar con la opción z frente a hacer primero un tar y después comprimirlo por separado con gzip?
  10. ¿Qué combinación de opciones utilizarías para crear, en un solo comando, un fichero tar comprimido con gzip?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué diferencia principal existe entre gzip y zip a la hora de trabajar con varios ficheros?

gzip comprime cada fichero de forma individual, generando un fichero comprimido por cada uno de ellos. zip, en cambio, puede agrupar varios ficheros en un único fichero comprimido.


2. ¿Qué ocurre con el fichero original al comprimirlo con gzip sin utilizar ninguna opción adicional?

El fichero original se elimina automáticamente una vez generado el fichero comprimido, a menos que se indique lo contrario con una opción específica.


3. ¿Para qué sirve la opción -k del comando gzip?

Permite conservar el fichero original tras la compresión, de modo que se mantienen tanto el fichero original como el fichero comprimido.


4. ¿Qué diferencia existe entre gzip y bzip2?

Ambos funcionan de manera muy similar, pero bzip2 utiliza un algoritmo de compresión distinto que, en teoría, puede ofrecer mejores resultados en algunos casos, aunque en la práctica la diferencia no suele ser muy significativa.


5. ¿Qué comandos se utilizan para descomprimir ficheros comprimidos con gzip y con bzip2?

Para descomprimir ficheros de gzip se utiliza gunzip, y para descomprimir ficheros de bzip2 se utiliza bunzip2.


6. ¿Qué información proporciona la opción -l del comando gzip?

Muestra un resumen con el tamaño del fichero comprimido, el tamaño del fichero original y el porcentaje de compresión conseguido.


7. ¿Por qué se recomienda utilizar zip cuando los ficheros se van a compartir con usuarios de Windows?

Porque el formato zip es mucho más habitual y compatible en entornos Windows, mientras que los formatos generados por gzip o bzip2 son menos comunes en ese sistema operativo.


8. ¿Para qué sirve la opción -r del comando zip?

Permite comprimir de forma recursiva, incluyendo el contenido de todos los subdirectorios a partir del directorio indicado, y no solo los ficheros del directorio actual.


9. ¿Qué ventaja tiene utilizar tar con la opción z frente a hacer primero un tar y después comprimirlo por separado?

Permite empaquetar y comprimir en un único comando, sin necesidad de ejecutar primero tar y después gzip de manera independiente, resultando en un proceso más rápido y cómodo.


10. ¿Qué combinación de opciones utilizarías para crear, en un solo comando, un fichero tar comprimido con gzip?

Se utilizaría la combinación tar czf, donde c indica crear, z indica que se debe comprimir con gzip, y f indica el nombre del fichero de destino.


Ficha de Laboratorio: Compresores en Linux (gzip, bzip2, zip)

Instrucciones de entrega:

  1. Rellena los campos y responde en este formulario desde tu navegador.
  2. Pulsa el botón de imprimir al final de la página.
  3. Selecciona "Guardar como PDF" en el diálogo de impresión.
  4. Entrega el archivo PDF en el aula virtual.

Alumno/a:      Fecha:      

Grupo:


Completa la ficha realizando las siguientes actividades:

  1. Comprime un fichero individual con gzip y observa qué ocurre con el original.
    Escribe el comando utilizado:

    Copia aquí la salida de ls -ltr tras la compresión:

    Explica qué ha ocurrido con el fichero original:
  2. Comprime un fichero conservando el original con la opción -k.
    Escribe el comando utilizado:

    Copia aquí la salida obtenida:
  3. Comprime varios ficheros a la vez con gzip y descomprímelos con gunzip.
    Escribe ambos comandos utilizados:

    Explica cuántos ficheros comprimidos se generaron y por qué:
  4. Consulta las estadísticas de compresión con gzip -l.
    Escribe el comando utilizado:

    Copia aquí parte del resultado obtenido:
  5. Comprime y descomprime los mismos ficheros utilizando bzip2 y bunzip2.
    Escribe ambos comandos utilizados:

    Indica qué extensión genera este compresor y compárala con la de gzip:
  6. Comprime varios ficheros en un único fichero con zip y descomprímelo con unzip en otra ubicación.
    Escribe el comando utilizado para comprimir:

    Escribe el comando utilizado para descomprimir en otra ubicación:

    Copia aquí la salida obtenida al comprobar el resultado:
  7. Crea, en un solo comando, un fichero tar comprimido con gzip.
    Escribe el comando utilizado:

    Copia aquí la salida obtenida:

    Explica la ventaja de este método frente a comprimir en dos pasos separados: