Zstandard y LZ4: Los Formatos de Compresión Modernos que Reemplazan a Gzip
Durante décadas, gzip dominó la compresión de paquetes Linux, servidores web y flujos de datos. Bzip2 ofrecía mejores ratios pero era extremadamente lento. Dos algoritmos cambiaron el panorama: LZ4 (2011) y Zstandard (2016) — ambos logran ratios similares o superiores a gzip siendo entre 3 y 10 veces más rápidos.
LZ4 (2011): Velocidad por Encima de Todo
Creado por Yann Collet (el mismo que más tarde desarrolló Zstandard), LZ4 fue diseñado con una única prioridad: velocidad de descompresión. En hardware moderno descomprime a aproximadamente 4 GB/s — suficiente para saturar el bus de RAM.
- Ratio de compresión: ~1,7:1 (inferior a gzip — archivos más grandes)
- Velocidad de compresión: ~750 MB/s (6–8× más rápido que gzip)
- Velocidad de descompresión: ~4.000 MB/s
Dónde se usa LZ4 hoy:
- Kernel de Linux (compresión RAM con zram, squashfs)
- Snapshots de LVM
- Caché de capas de Docker
- Redis, Cassandra y otras bases de datos en memoria
- Pipelines de datos en tiempo real donde la latencia importa más que el tamaño
Zstandard / Zstd (2016): El Nuevo Estándar de Uso General
Creado por Yann Collet en Facebook (ahora Meta) y publicado como código abierto en 2016, el objetivo de Zstandard era igualar o superar el ratio de compresión de gzip siendo mucho más rápido.
- Niveles configurables 1–22: el nivel 3 ≈ gzip nivel 6 en ratio, pero 3× más rápido
- A partir del nivel 19+: supera a bzip2 en ratio de compresión
- Facebook lo usa para miles de millones de compresiones internas al día
Zstd es ahora estándar en:
- Paquetes de Fedora y Arch Linux (
.tar.zst) - Paquetes apt de Ubuntu (experimental)
- OpenSSH, Samba, Btrfs, sistema base de FreeBSD
- Kernel de Linux (
CONFIG_KERNEL_ZSTD)
Tabla Comparativa de Compresión
| Algoritmo | Ratio | Velocidad compresión | Velocidad descompresión | Caso de uso |
|---|---|---|---|---|
| LZ4 | ~1,7:1 | 750 MB/s | 4.000 MB/s | Tiempo real, compresión RAM |
| Gzip (nivel 6) | ~2,8:1 | 120 MB/s | 400 MB/s | Web (Content-Encoding: gzip) |
| Zstd (nivel 3) | ~2,9:1 | 400 MB/s | 1.400 MB/s | Paquetes Linux, uso general |
| Bzip2 | ~3,1:1 | 20 MB/s | 90 MB/s | Legado (en proceso de reemplazo) |
| XZ/LZMA | ~3,4:1 | 10 MB/s | 50 MB/s | Paquetes Debian, ratio máximo |
Extensiones de Archivo Comunes
| Extensión | Significado |
|---|---|
.zst |
Archivo comprimido con Zstandard |
.lz4 |
Archivo comprimido con LZ4 |
.tar.zst |
Archivo tar comprimido con Zstd |
.tar.lz4 |
Archivo tar comprimido con LZ4 |
Trabajar con Zstd
# Comprimir
zstd archivo.txt # crea archivo.txt.zst
zstd -19 archivo.txt # compresión máxima
zstd -T0 archivo.txt # multihilo (usa todos los núcleos)
# Descomprimir
zstd -d archivo.txt.zst # o: unzstd archivo.txt.zst
# Comprimir directorio (tar + zstd)
tar -I zstd -cf archivo.tar.zst ./carpeta/
# Extraer tar.zst
tar -I zstd -xf archivo.tar.zst
Instalar zstd:
- Linux (Debian/Ubuntu):
sudo apt install zstd - Linux (Fedora/RHEL):
sudo dnf install zstd - macOS:
brew install zstd - Windows: descargar desde la página de releases de Zstd en GitHub
Trabajar con LZ4
# Comprimir
lz4 archivo.txt # crea archivo.txt.lz4
# Descomprimir
lz4 -d archivo.txt.lz4
# Tar + LZ4
tar --use-compress-program=lz4 -cf archivo.tar.lz4 ./carpeta/
Convertir Desde Formatos Anteriores
Si tienes archivos comprimidos con gzip, bzip2 o XZ y quieres recomprimirlos con Zstd:
# Gzip a Zstd (recomprimir)
gzip -d -c archivo.gz | zstd -o archivo.zst
# Bzip2 a Zstd
bzip2 -d -c archivo.bz2 | zstd -o archivo.zst
# XZ a Zstd
xz -d -c archivo.xz | zstd -o archivo.zst
Estos comandos descomprimen el formato original mediante tubería y recomprimen a Zstd sin crear un archivo intermedio sin comprimir en disco.
Por Qué los Gestores de Paquetes Cambiaron
- Fedora 31 (2019): Migró los paquetes RPM a
.tar.zst— la velocidad de instalación mejoró ~15% gracias a la descompresión más rápida - Arch Linux (2020): Migró los paquetes de
.tar.xza.tar.zst - Docker: Usa Zstd para la transferencia más rápida de capas de imagen (eStargz / especificación de imagen OCI)
- npm: En consideración para la compresión de tarballs del registro
Cuándo Usar Cada Formato
| Situación | Formato recomendado |
|---|---|
| Máxima velocidad de descompresión (snapshots de BD, cachés RAM, streaming en tiempo real) | LZ4 |
| Reemplazo de uso general para gzip/bzip2 | Zstd (nivel 3) |
| Ratio de compresión máximo, velocidad menos importante | Zstd (nivel 19+) o XZ |
| Servidores web, HTTP Content-Encoding | Gzip (compatibilidad universal) |
| Herramientas antiguas que solo entienden gzip | Gzip |
La conclusión clave: Zstd es el nuevo estándar para la mayoría de casos de uso. LZ4 gana cuando la latencia submilisegundo es crítica. Gzip sigue siendo relevante solo donde la compatibilidad es innegociable.
Conversiones relacionadas
Conversiones frecuentes del catálogo: