¿Qué es 7-Zip?
7-Zip es un archivador de archivos libre y de código abierto creado por Igor Pavlov en 1999, publicado bajo la licencia GNU LGPL. Introduce el formato contenedor 7z, que admite ratios de compresión muy altos utilizando los algoritmos de compresión LZMA (Lempel-Ziv-Markov chain algorithm) y LZMA2. 7-Zip se hizo famoso por lograr consistentemente un 30-70% mejor compresión que ZIP en distribuciones de software típicas.
7-Zip es multiplataforma: la GUI completa funciona en Windows, mientras que la herramienta de línea de comandos 7z (vía p7zip) está disponible en Linux y macOS.
Arquitectura del Formato 7z
A diferencia de la compresión por archivo de ZIP, 7z usa compresión sólida por defecto — todos los archivos se concatenan y comprimen como un único flujo. Esto significa:
- Compresión dramáticamente mejor para muchos archivos pequeños y similares (código fuente, archivos de registro) porque el compresor puede encontrar redundancia entre archivos.
- Sin acceso aleatorio: para extraer el archivo N, hay que descomprimir desde el inicio del bloque sólido.
- Memoria del descompresor: LZMA2 con diccionarios grandes (hasta 4 GB) requiere RAM significativa.
Métodos de Compresión en 7z
| Método | Notas |
|---|---|
| LZMA | Predeterminado antes de 7-Zip 9.30 — diccionario hasta 1,5 GB |
| LZMA2 | Predeterminado desde 7-Zip 9.30 — multihilo, diccionario hasta 4 GB |
| PPMD | Excelente para texto |
| BZip2 | bzip2 estándar |
| Delta | Filtro de preprocesamiento para datos binarios |
| BCJ / BCJ2 | Filtro de conversión de ramas x86 — mejora la compresión de ejecutables en un 5-15% |
Comparación de Compresión: 7z vs. ZIP
Resultados típicos en 100 MB de distribución de software:
| Formato | Tamaño | Tiempo compresión | Tiempo descompresión |
|---|---|---|---|
| Sin comprimir | 100 MB | — | — |
| ZIP (Deflate, nivel 6) | 68 MB | 3 s | 1 s |
| ZIP (Deflate, nivel 9) | 65 MB | 12 s | 1 s |
| 7z (LZMA2, nivel 5) | 52 MB | 8 s | 3 s |
| 7z (LZMA2, nivel 9) | 48 MB | 35 s | 3 s |
| 7z (LZMA2, nivel 9 + BCJ2) | 42 MB | 40 s | 3 s |
7z logra consistentemente almacenes un 20-35% más pequeños que ZIP en software.
Cifrado AES-256 en 7z
7z admite cifrado AES-256 con una clave derivada de la contraseña mediante SHA-256 con 524.288 iteraciones. Crucialmente, 7z cifra también los nombres de archivo y la estructura de directorios — el almacén aparece como un único blob opaco. Esta es una ventaja de seguridad significativa sobre el cifrado AES de ZIP.
# Cifrar con AES-256 (incluye cifrado de nombres de archivo)
7z a -mhe=on -p"contraseña-fuerte" cifrado.7z archivos/
# -mhe=on = cifrado de cabecera (cifra también los nombres de archivo)
Referencia de Comandos 7-Zip
# Crear almacén
7z a almacen.7z archivos/
7z a -t7z -mx=9 almacen.7z archivos/ # compresión máxima
# Extraer
7z x almacen.7z # extraer con rutas completas
7z e almacen.7z # extraer al directorio actual (sin rutas)
7z x almacen.7z -o/directorio/salida/
# Listar contenido
7z l almacen.7z
# Comprobar integridad
7z t almacen.7z
# Actualizar (añadir/reemplazar)
7z u almacen.7z archivo_nuevo.txt
# Eliminar archivo del almacén
7z d almacen.7z no_deseado.txt
# Crear almacén dividido (volúmenes de 100 MB)
7z a -v100m almacen.7z archivo_grande.iso
Formatos Soportados (Lectura)
7-Zip puede abrir y extraer de muchos formatos más allá de 7z: ZIP, GZIP, BZIP2, XZ, TAR, RAR (v1-5), ISO 9660, WIM, DMG, CAB, MSI, instaladores NSIS, RPM/DEB, VHD/VMDK, y más. Esto convierte a 7-Zip en una herramienta universal de inspección de almacenes.
Archivos Autoextraíbles (SFX)
7-Zip puede crear archivos .exe autoextraíbles — almacenes que se descomprimen solos sin requerir que 7-Zip esté instalado en la máquina objetivo:
# Crear SFX (ejecutable Windows)
7z a -sfx almacen.exe archivos/
El Algoritmo LZMA en Detalle
LZMA combina:
- Coincidencia de diccionario LZ77 — encuentra cadenas repetidas en la salida anterior y las reemplaza con pares (desplazamiento, longitud). El tamaño del diccionario determina cuán atrás puede mirar.
- Codificador de rango de cadena de Markov — codificador tipo aritmético que codifica probabilidades de símbolos usando modelos de contexto. Mucho más eficiente que la codificación Huffman.
LZMA2 añade:
- Multihilo: divide la entrada en fragmentos procesados por flujos LZMA independientes.
- Paso de bloques incompresibles: los fragmentos que no pueden comprimirse se almacenan sin comprimir.
7z vs. RAR
| Característica | 7z | RAR |
|---|---|---|
| Licencia | Libre, código abierto | Propietario (gratuito para descomprimir) |
| Compresión | LZMA2 | RAR5 |
| Ratio | ~igual | Ligeramente peor que 7z |
| Cifrado | AES-256 + nombres de archivo | AES-256 + nombres de archivo |
| Registros de recuperación | No | Sí (datos de paridad para almacenes corruptos) |
| Almacenes sólidos | Sí | Sí |
| Coste | Gratuito | ~40$ para WinRAR |
Elige 7z para flujos de trabajo de código abierto. Elige RAR solo si los registros de recuperación son críticos.
Buenas Prácticas
- Usa nivel de compresión LZMA2 5 para un buen equilibrio velocidad/ratio; nivel 9 para almacenes de distribución.
- Habilita el modo sólido (predeterminado) para muchos archivos pequeños similares.
- Usa
-mhe=onpara cifrar cabeceras (nombres de archivo) junto con el contenido para almacenes sensibles. - Usa contraseñas fuertes — AES-256 de 7z con 500K iteraciones SHA-256 es resistente a fuerza bruta solo si la contraseña tiene alta entropía.
- Especifica el tamaño del diccionario (
-md=256m) según la RAM disponible. - Usa el filtro BCJ (
-mf=BCJ2) al comprimir ejecutables y DLLs. - Crea volúmenes divididos para almacenes que deben transmitirse por canales con límite de tamaño.
- Comprueba siempre los almacenes después de la creación con
7z t. - Prefiere 7z sobre RAR para escenarios de código abierto y multiplataforma.
- Usa XZ (LZMA2) vía TAR en Linux para distribución de paquetes.
Conversiones relacionadas
Conversiones de archivos comprimidos más usadas: