Cuando trabajamos con archivos en Linux, es común escuchar términos como formato, extensión, empaquetar y comprimir, estos se suelen usar de manera intercambiable, dando lugar a confusiones y errores conceptuales. Para no confundirnos, vamos a empezar aclarando estas diferencias antes de meternos de lleno en cómo usar las herramientas más comunes para manejar archivos comprimidos y empaquetados.

Diferencia entre Formato y Extensión

Aunque muchas veces los usamos como sinónimos, formato y extensión no son lo mismo:

  • Formato: Es cómo está estructurado el contenido de un archivo. Define cómo se guarda la información. Ejemplo: un archivo de texto plano, un archivo PDF, o un archivo comprimido.
  • Extensión: Es el sufijo que se añade al nombre del archivo (como .txt, .pdf o .tar.gz) para indicar su tipo. La extensión no cambia el formato; es solo una convención para que nosotros, los seres humanos y las aplicaciones identifiquemos el archivo.

Por ejemplo:

  • Un archivo .gz tiene el formato de gzip.
  • Un archivo .tar.gz tiene dos formatos: tar (empaquetado) y gzip (comprimido).

Pro tip: Cambiar la extensión no cambia el formato. Si renombras archivo.txt a archivo.pdf, no se convertirá mágicamente en un PDF. El formato sigue siendo texto plano. Lo mismo si el archivo.txt lo renombro archivo.mp3. ¿Acaso se convierte en una canción? No, porque solo hemos cambiado una parte del nombre, no la estructura interna que es mas compleja de tratar.

Diferencia entre Empaquetar y Comprimir

Ahora, imagina que estás manejando ropa sucia en tu casa. Esto lo explica todo:

Empaquetar:

Empaquetar es como poner toda la ropa sucia en un cesto. Juntas varias prendas (o archivos, en nuestro caso) en un solo lugar para transportarlas o almacenarlas más fácilmente. En Linux, el equivalente es usar el comando tar para empaquetar archivos en un único archivo llamado tarball (archive.tar).

  • Importante: Empaquetar no reduce el espacio que ocupan los archivos. Simplemente los agrupa.

Comprimir:

Comprimir es cuando el cesto ya está lleno y quieres meter más ropa. Entonces, presionas la ropa hacia abajo con fuerza para que quepa más. En Linux, la compresión reduce el tamaño de los archivos para ahorrar espacio usando herramientas como gzip, bzip2, o xz.

  • Ejemplo: Si empaquetas la ropa con tar y luego comprimes el cesto con gzip, obtienes un archivo archive.tar.gz, que ocupa menos espacio.

Comprimir y Empaquetar Archivos en Linux

Ahora que entendemos los conceptos, vamos a ver cómo usar las herramientas más comunes.

Compresión Simple

Estas herramientas comprimen un archivo individual:

  • gzip: Comprime archivos con el algoritmo gzip.

gzip file1 # Comprime 'file1' -> crea 'file1.gz'.
gzip -9 file1 # Máxima compresión.
gunzip file1.gz # Descomprime 'file1.gz'.

  • bzip2: Ofrece mejor compresión que gzip, pero es más lento.

bzip2 file1 # Comprime 'file1' -> crea 'file1.bz2'.
bunzip2 file1.bz2 # Descomprime 'file1.bz2'.

  • xz: Comprime con alta eficiencia.

xz file1 # Comprime 'file1' -> crea 'file1.xz'.
unxz file1.xz # Descomprime 'file1.xz'.


Empaquetar con tar

El comando tar junta varios archivos o directorios en un solo archivo, llamado tarball. Esto no reduce el tamaño, solo agrupa los archivos.

  • Crear un tarball descomprimido:

tar -cvf archive.tar file1 file2 dir1

  • Listar el contenido de un tarball:

tar -tf archive.tar

  • Extraer un tarball:

tar -xvf archive.tar


Empaquetar y Comprimir con tar

Si quieres empaquetar y comprimir en un solo paso, puedes usar tar junto con gzip, bzip2, o xz:

  • Gzip:

tar -czvf archive.tar.gz dir1 # Empaqueta y comprime con gzip.
tar -xzvf archive.tar.gz # Extrae un tarball comprimido con gzip.

  • Bzip2:

tar -cjvf archive.tar.bz2 dir1 # Empaqueta y comprime con bzip2.
tar -xjvf archive.tar.bz2 # Extrae un tarball comprimido con bzip2.

  • Xz:

tar -cJvf archive.tar.xz dir1 # Empaqueta y comprime con xz.
tar -xJvf archive.tar.xz # Extrae un tarball comprimido con xz.


Tabla Resumen de Comandos

Herramienta Acción Comando
gzip Comprimir gzip file1
Descomprimir gunzip file1.gz
bzip2 Comprimir bzip2 file1
Descomprimir bunzip2 file1.bz2
xz Comprimir xz file1
Descomprimir unxz file1.xz
tar Empaquetar tar -cvf archive.tar file1 file2
Listar contenido tar -tf archive.tar
Extraer tar -xvf archive.tar
tar + gzip Empaquetar+Comprimir tar -czvf archive.tar.gz dir1
Extraer tar -xzvf archive.tar.gz
tar + bzip2 Empaquetar+Comprimir tar -cjvf archive.tar.bz2 dir1
Extraer tar -xjvf archive.tar.bz2
tar + xz Empaquetar+Comprimir tar -cJvf archive.tar.xz dir1
Extraer tar -xJvf archive.tar.xz