Cookies de estadística y publicidad
Usamos cookies de estadística y de publicidad, y ambas van a Google. Si rechazas, para ti no cambia nada visible.Ir a la página de privacidad
XZ
El más potente de los compresores habituales en Unix. El estándar para descargar código fuente y paquetes.
XZ
XZ es un formato de flujo, que se escribe y se lee de principio a fin. Se usa para el archivado.
La extensión es .xz y el nombre completo, XZ Archive. Ambos importan menos que lo que el archivo puede contener, y de eso trata el resto de esta página.
Se remonta a 2009.
La edad interesa por un motivo práctico: cuanto más antiguo es un formato, más programas han tenido tiempo de aprenderlo.
Está publicada entera, así que cualquiera puede implementarla leyendo el documento en vez de a base de inspeccionar archivos. Por eso aparece en tantos programas, y por eso los archivos escritos hace veinte años siguen abriéndose hoy. Publicada no quiere decir libre de regalías: cuando un formato envuelve un códec, la licencia de las patentes es un asunto aparte que la norma no resuelve.
XZ guarda su contenido exactamente. Volver a guardarlo no cambia nada, así que puedes abrirlo, editarlo y guardarlo tantas veces como quieras sin acumular daño; eso es lo que lo convierte en un formato de trabajo y no de entrega.
XZ comprime un solo flujo y no tiene ninguna noción de nombre de archivo ni de carpeta. Por eso se ve tan a menudo junto a TAR, que aporta la estructura que le falta.
Trabaja por tramos de 8 MB: para que una repetición se pueda comprimir, tiene que caber entera dentro de uno.
Ese único número explica la mayor parte de la diferencia entre un formato de archivo comprimido y otro. Un tramo mayor encuentra más repetición y tarda más y gasta más memoria en hacerlo: ese es todo el intercambio.
XZ lleva una suma de verificación, para que un archivo dañado se detecte en vez de leerse mal en silencio.
Una suma de verificación no repara nada. Te dice que el archivo está mal, que es la diferencia entre enterarte ahora y enterarte por la persona a la que se lo enviaste.
xz, 7-Zip y Keka lo leen, y también la mayoría de programas del mismo tipo.
Cuando un archivo no se abre, el formato rara vez es el problema: lo más habitual es que el programa sea anterior al formato. Convertir a algo más antiguo es la salida fiable, y para eso está el resto de este sitio.
Ningún navegador lo lee.
Ese es el motivo más frecuente para convertirlo: no que el formato sea malo, sino que el sitio donde quieres mostrar el archivo no sabe leerlo.
XZ está pensado para entregarse, no para trabajar dentro. Editar uno es posible y rara vez agradable; lo sensato es cambiar el original y volver a exportar.
Las quejas recurrentes: guarda un único flujo y no sabe describir una carpeta.
Nada de esto es motivo para evitar el formato. Son las cosas que conviene conocer antes de que una de ellas te sorprenda, que es una afirmación distinta y más útil.
Aquí está toda la diferencia con 7z, y de ella sale lo demás. Un archivo xz contiene exactamente un flujo comprimido. No tiene directorio, ni lista de nombres, ni la menor idea de que puedan existir varios archivos. Comprimes `informe.txt` y obtienes `informe.txt.xz`; dentro no hay nada más.
Por eso la forma normal es `.tar.xz`. Tar junta el árbol de carpetas en un único flujo y xz comprime ese flujo, que es el mismo reparto de tareas que en `.tar.gz`. Un `.7z` no necesita tar porque 7z ya es un formato de archivo comprimido; un `.xz` lo necesita porque no lo es.
Los dos usan LZMA2, así que sobre los mismos datos dan tamaños muy parecidos. Frente a gzip, xz suele sacar un treinta por ciento o más en texto, código fuente y registros: el margen que convierte una descarga de 100 MB en una de 65.
Lo paga en tiempo y en memoria. Comprimir con los ajustes altos puede tardar muchas veces lo que tarda gzip y puede pedir varios cientos de megabytes de memoria de trabajo. Descomprimir es rápido y barato en cualquier caso, que es exactamente la forma adecuada para algo que se comprime una vez y se descarga muchísimas.
El núcleo de Linux se distribuye como `.tar.xz`. También la mayoría de los archivos de paquetes de las distribuciones y buena parte de las publicaciones de código fuente. La aritmética es sencilla: un archivo que se descarga millones de veces justifica casi cualquier esfuerzo de compresión, porque el coste se paga una vez y el ahorro se multiplica por cada descarga.
Por eso te encuentras xz sobre todo cuando bajas software y casi nunca cuando alguien te manda algo. Es un formato de distribución, no un formato para compartir, y la diferencia se nota en las herramientas que hay alrededor.
En marzo de 2024 se encontró una puerta trasera en el software xz-utils, en las versiones 5.6.0 y 5.6.1, registrada como CVE-2024-3094. La había introducido a propósito un colaborador que llevaba unos dos años ganándose la confianza del proyecto, y apuntaba al servicio SSH en sistemas donde una biblioteca enlazada con xz acababa cargada dentro de él.
La descubrió Andres Freund, un desarrollador que notó que sus inicios de sesión por SSH tardaban alrededor de medio segundo más de lo esperado y decidió tirar del hilo en lugar de encogerse de hombros. Las versiones afectadas estaban en ramas de pruebas y apenas habían llegado a distribuciones estables, así que la exposición real fue pequeña.
El formato no quedó comprometido en absoluto. La puerta trasera estaba en una versión concreta de un programa concreto, no cambió cómo se estructura un archivo xz, y un `.xz` creado antes, durante o después de aquello es un flujo comprimido corriente. No hay manera de que un archivo xz normal transporte ese ataque.
Lo que queda es una lección sobre cómo se mantiene el software libre, no sobre compresión. Sigue siendo lo más importante que le ha ocurrido a este formato, y merece conocerse con precisión en vez de como el rumor de que xz no es seguro.
xz guarda una suma de comprobación —CRC32, CRC64 o SHA-256— y la verifica al descomprimir. Si un byte cambió durante la transferencia o en un disco que empieza a fallar, la extracción falla con un error explícito en lugar de producir en silencio un archivo equivocado.
Es una ventaja real sobre gzip, cuya comprobación es más débil, y parte de la razón por la que las distribuciones se fían de él para entregar software. Detecta el daño; no lo repara, que es lo único que el registro de recuperación de RAR hace y ningún otro formato de esta lista ofrece.
Zstandard, publicado por Facebook en 2016, comprime casi tan bien como xz a velocidades cercanas a gzip. Para todo aquello en lo que el tiempo de compresión cuenta —construir paquetes, copias de seguridad nocturnas, datos que se escriben de forma continua— esa combinación es difícil de discutir, y varias distribuciones han pasado a él el formato de sus paquetes.
xz sigue ganando en ratio puro con sus ajustes más altos, y por eso se mantiene en publicaciones de código y en los archivos del núcleo, donde el fichero se construye una sola vez. En realidad no compiten por el mismo trabajo.
Cualquier sistema Linux lo maneja desde la terminal. macOS no trae el binario `xz` de serie —Homebrew o MacPorts lo instalan—, pero su `tar`, apoyado en libarchive, desempaqueta un `.tar.xz` sin ayuda, que cubre la mayoría de lo que llega. En Windows hace falta una utilidad como 7-Zip, que lo lee sin dificultad. Descomprimir un `.tar.xz` son dos pasos que casi todas las herramientas presentan como uno: quitar la compresión y después abrir el tar.
No esperes una carpeta al descomprimir un `.xz` a secas. Sale exactamente un archivo, el que se comprimió, porque el formato nunca guardó otra cosa. Si esperabas un árbol de carpetas, el archivo que querías era el `.tar` de dentro.
Las conversiones entre formatos de archivo comprimido son de las pocas de este sitio que no se pueden hacer en el navegador: las resuelve 7-Zip en un contenedor nuestro. Eso significa que el archivo se envía a api.quinvert.com. Allí se escribe en una carpeta temporal recién creada y con el nombre `input` más la extensión, de modo que el nombre que le habías puesto tú no llega a tocar el disco, y esa carpeta se borra entera al terminar, también cuando la conversión falla. El contenedor no tiene salida a internet, y la respuesta se devuelve con la orden de no guardarla en caché.
Los números que cambian respecto al resto del sitio son dos: el límite es de 25 MB por archivo en lugar de los 100 MB de las conversiones locales, y hay un tope de 100 conversiones de servidor al día por visitante, que se reinicia a medianoche UTC y no a la tuya. Además, cada paso del proceso se corta a los 60 segundos; como una conversión de archivo comprimido encadena varios procesos, la petición completa puede pasar de ese minuto con toda normalidad.
Los archivos salen byte a byte iguales: recomprimir un `.xz` en un `.zip` o en un `.tar.gz` no toca su contenido. Lo que no sobrevive es lo que el contenedor guardaba sobre ellos y no dentro de ellos: una contraseña, y según el formato los permisos y las fechas originales.
Un detalle práctico para archivos grandes: la expansión declarada está limitada a 2 GiB, así que un `.xz` que anuncia descomprimirse en más que eso se rechaza en lugar de intentarlo. Y si lo que quieres es mandarle algo a una persona, el ZIP sigue siendo lo que su ordenador abre sin ayuda; la diferencia de tamaño en un envío suelto rara vez compensa tener que explicar qué es un `.xz`.
| Extensión | .xz |
|---|---|
| Tipo de medio | application/x-xz |
| Primera publicación | 2009 |