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 congzip
, obtienes un archivoarchive.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 |