Formato de archivo XZ
XZ es un formato de archivo de alta compresión que se utiliza principalmente para comprimir archivos individuales y ofrece una eficiencia de compresión superior y compatibilidad con código abierto. Desarrollado como parte de XZ Utils, este formato es conocido por su uso del algoritmo de compresión LZMA2, que logra altas relaciones de compresión manteniendo velocidades de descompresión razonables. Los archivos XZ se utilizan ampliamente en la distribución de paquetes de software, especialmente en sistemas operativos tipo Unix como Linux.
Información general del archivo XZ
Los archivos XZ están diseñados para proporcionar una compresión eficiente centrándose en reducir el tamaño de los archivos para el almacenamiento y la distribución. El formato utiliza el algoritmo LZMA2, que combina compresión de diccionario y codificación de entropía, lo que lo hace muy eficaz para comprimir archivos grandes. Los archivos XZ suelen contener un único archivo comprimido, pero se pueden combinar con otras herramientas como tar para comprimir directorios completos. El formato XZ se utiliza a menudo en la distribución de software, copia de seguridad y archivado de datos, particularmente en el ecosistema Linux, donde se ha convertido en un estándar para empaquetar software y actualizaciones del sistema.
Información del historial de XZ
- 2005: El formato XZ comenzó a desarrollarse como parte del proyecto XZ Utils, cuyo objetivo era crear un sucesor más eficiente del antiguo formato LZMA.
- 2009: Se lanzó oficialmente XZ Utils, introduciendo el formato XZ como un nuevo estándar para necesidades de alta compresión.
- 2010: XZ comenzó a ganar popularidad en la comunidad Linux, convirtiéndose rápidamente en el formato preferido para comprimir paquetes de software y archivos de sistema.
- 2011: Las principales distribuciones de Linux, incluidas Debian y Arch Linux, comenzaron a adoptar XZ como formato de compresión predeterminado para sus repositorios de paquetes.
- 2014: el uso de XZ se expandió más allá de Linux, volviéndose popular para la distribución de software multiplataforma, particularmente para aplicaciones que requieren altas relaciones de compresión.
- 2020: XZ sigue utilizándose ampliamente en el empaquetado de software, el almacenamiento y la distribución de datos, especialmente en entornos donde la compresión eficiente es fundamental.
Estructura del archivo XZ
- Encabezado: el encabezado contiene metadatos sobre el archivo XZ, incluida la versión del formato, indicadores y cualquier extensión opcional utilizada. También indica la presencia de sumas de verificación para la integridad de los datos.
- Flujo de datos comprimidos: el núcleo del archivo XZ es el flujo de datos comprimidos. Esta sección contiene los datos del archivo real, comprimidos utilizando el algoritmo LZMA2. El flujo de datos se divide en bloques, lo que permite una compresión y descompresión eficiente. Cada bloque se puede descomprimir de forma independiente, lo que ayuda a recuperar datos incluso si el archivo está parcialmente dañado.
- Pie de página: el pie de página incluye una suma de verificación CRC32 que verifica la integridad del archivo. También marca el final del flujo de datos comprimidos y puede contener información adicional como un índice de bloques para un acceso rápido.
El formato de archivo XZ está diseñado para la compresión de un solo archivo y utiliza una estructura sencilla para lograr altos índices de compresión. Aquí hay una descripción general de la estructura de un archivo XZ:
Métodos de compresión XZ
- LZMA2: este es el único y predeterminado método de compresión utilizado por los archivos XZ. LZMA2 se basa en el algoritmo LZ77 e incorpora codificación de entropía avanzada, lo que lo hace altamente eficiente para comprimir archivos de gran tamaño. Ofrece configuraciones de compresión ajustables, lo que permite a los usuarios priorizar la velocidad o la relación de compresión según sus necesidades.
- Filtros: además de LZMA2 , XZ admite varios filtros opcionales que se pueden aplicar antes de la compresión para reducir aún más el tamaño del archivo. Estos incluyen la codificación delta, que es útil para comprimir datos que tienen cambios pequeños y repetidos, y BCJ (Branch/Call/Jump), que optimiza la compresión de código ejecutable transformando ciertas instrucciones en formas más comprimibles.
- Sumas de comprobación CRC32 y SHA-256: si bien no son métodos de compresión per se, los archivos XZ utilizan sumas de comprobación CRC32 para comprobaciones de integridad y, opcionalmente, admiten SHA-256 para una verificación mejorada de los datos, lo que garantiza que los datos comprimidos no se hayan corrompido ni alterado.
El formato XZ se basa principalmente en el algoritmo de compresión LZMA2, conocido por su alta relación de compresión y velocidad de descompresión razonable. Aquí hay un vistazo más de cerca a los métodos de compresión asociados con XZ:
.xz Operaciones admitidas
Aspose.Zip ofrece soporte integral para trabajar con archivos .xz, lo que facilita la administración de archivos comprimidos. Esto es lo que puedes hacer:
- Extracción completa: Extraiga fácilmente todos los archivos de un archivo .xz, preservando la integridad y estructura del contenido original.
- Extracción selectiva: Apunte a archivos específicos dentro de un archivo .xz, lo que permite una recuperación de datos precisa o una descompresión selectiva basada en nombres de archivos u otros criterios.
- Compresión de datos: Cree archivos .xz a partir de archivos y directorios, utilizando el eficiente método de compresión LZMA2 para reducir significativamente el tamaño de los archivos.
- Configuración de compresión personalizada: Ajuste los niveles de compresión y otros parámetros para equilibrar la velocidad de compresión y el tamaño del archivo, adaptando el proceso a sus necesidades específicas.
Estructura del archivo .XZ
El formato de archivo .xz se utiliza principalmente para comprimir y empaquetar datos. Emplea el algoritmo LZMA2 para lograr altas relaciones de compresión. A continuación se ofrece una descripción general de la estructura de un archivo .xz:
Encabezado de transmisión:
- Bytes mágicos: los primeros 6 bytes (FD 37 7A 58 5A 00) identifican el archivo como un archivo .xz.
- Stream Flags: incluye detalles como el tamaño del bloque y las opciones de compresión.
Encabezado del bloque:
- Tamaño del bloque: Indica el tamaño del bloque que sigue.
- Método de compresión: especifica el algoritmo utilizado (normalmente LZMA2).
- Cadenas de filtros: detalla los filtros adicionales aplicados antes o después de la compresión.
Bloques de datos comprimidos:
- Datos: los datos reales comprimidos utilizando el algoritmo LZMA2.
- CRC32: suma de comprobación utilizada para verificar la integridad de los datos comprimidos.
Sección de índice:
- Datos de índice: proporciona compensaciones para cada bloque y el tamaño sin comprimir, lo que permite el acceso aleatorio dentro del flujo comprimido.
- Índice CRC32: Garantiza la integridad de la sección del índice.
Pie de página de la transmisión:
- Banderas de transmisión: repite las banderas de transmisión del encabezado con fines de validación.
- Tamaño hacia atrás: el tamaño de la sección de índice, lo que permite el recorrido inverso del archivo.
- Bytes mágicos: el archivo termina con una secuencia de 2 bytes (59 5A) para indicar el final del archivo .xz.
Metadatos opcionales:
- Algunos archivos .xz pueden incluir metadatos adicionales para funciones especiales o funcionalidades ampliadas, como filtros personalizados o cifrado.
Popularidad del formato XZ
El formato de archivo .xz ha ganado una gran popularidad, particularmente en las comunidades de Linux y de código abierto, debido a su alta relación de compresión y uso eficiente de los recursos. Se utiliza ampliamente para comprimir paquetes de software, distribuir código fuente y archivar grandes conjuntos de datos. El conjunto de herramientas XZ Utils brinda soporte sólido para crear, extraer y administrar archivos .xz en varias plataformas, incluidas Linux, macOS y Windows. Aunque no se adopta tan ampliamente en entornos Windows como ZIP o CAB , .xz es apreciado por su equilibrio entre eficacia de compresión y rendimiento, lo que lo convierte en la opción preferida de desarrolladores y administradores de sistemas. Además, .xz está integrado en muchos sistemas de administración de paquetes, como APT de Debian y Pacman de Arch Linux, lo que consolida aún más su papel en el ecosistema de distribución de software.
Ejemplos de uso de archivos XZ
Esta sección proporciona ejemplos de código que demuestran cómo comprimir y descomprimir archivos XZ usando C# y Java. Estos ejemplos utilizan bibliotecas como Aspose.Zip para C# y la clase XzArchive integrada (según el entorno Java) para interactuar con archivos XZ.
Compress XZ File via C#
using (FileStream xzFile = File.Open("data.bin.xz", FileMode.Create))
{
using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new XzArchive(Aspose.Zip.Xz.Settings.XzArchiveSettings.FastestSpeed))
{
archive.SetSource(source);
archive.Save(xzFile);
}
}
}
Open XZ Archive via C#
using (var archive = new XzArchive("data.bin.xz"))
{
archive.Extract("data.bin");
}
Compress XZ File via C#
try (FileOutputStream xzFile = new FileOutputStream("data.bin.xz")) {
try (FileInputStream source = new FileInputStream("data.bin")) {
try (XzArchive archive = new XzArchive(XzArchiveSettings.getFastestSpeed())) {
archive.setSource(source);
archive.save(xzFile);
}
}
} catch (IOException ex) {
}
Open XZ Archive via Java
try (XzArchive archive = new XzArchive("data.bin.xz")) {
archive.extract("data.bin");
}
Información adicional
La gente ha estado preguntando
1. ¿Se admite .xz en todos los sistemas operativos?
Si bien .xz se usa más comúnmente en entornos Linux, es compatible con todos los principales sistemas operativos. Herramientas como XZ Utils están disponibles para Windows y macOS, y herramientas multiplataforma como 7-Zip también son compatibles Archivos .xz.
2. ¿Cuáles son las ventajas de utilizar archivos XZ?
Los archivos XZ ofrecen varias ventajas, que incluyen altas tasas de compresión, uso eficiente de los recursos del sistema y compatibilidad multiplataforma. Se utilizan comúnmente para archivar grandes conjuntos de datos, distribuir paquetes de software y realizar copias de seguridad de datos.
3. ¿Puedo comprimir varios archivos en un único archivo .xz?
A diferencia de formatos como ZIP o TAR , .xz se utiliza normalmente para comprimir un solo archivo. Si desea comprimir varios archivos, primero debe archivarlos en un solo archivo (usando una API Aspose.Zip para crear un archivo .tar ) y luego comprime el archivo usando .xz, lo que da como resultado un archivo .tar.xz.