stringtranslate.com

Utilidades XZ

XZ Utils (anteriormente LZMA Utils ) es un conjunto de compresores de datos sin pérdida de línea de comandos de software libre , que incluye los programas lzma y xz, para sistemas operativos tipo Unix y, a partir de la versión 5.0, Microsoft Windows . Para la compresión/descompresión se utiliza el algoritmo de cadena Lempel–Ziv–Markov (LZMA). XZ Utils comenzó como un puerto Unix del LZMA- SDK de Igor Pavlov que se ha adaptado para encajar perfectamente en entornos Unix y su estructura y comportamiento habituales.

Características

XZ Utils puede comprimir y descomprimir los formatos de archivo xz y lzma . Dado que el formato LZMA se considera obsoleto , [2] XZ Utils comprime a xz de forma predeterminada.

En la mayoría de los casos, xz logra tasas de compresión más altas que alternativas como zip , [3] gzip y bzip2 . La velocidad de descompresión es mayor que bzip2, pero menor que gzip. La compresión puede ser mucho más lenta que gzip, y es más lenta que bzip2 para niveles altos de compresión, y es más útil cuando un archivo comprimido se usará muchas veces. [4] [5]

XZ Utils consta de dos componentes principales:

Existen varios atajos de comandos, como lzma(para xz --format=lzma), unxz(para xz --decompress; análogo a gunzip) y xzcat(para unxz --stdout; análogo a zcat).

Uso

Tanto el comportamiento del software como las propiedades del formato de archivo han sido diseñados para funcionar de forma similar a las de las populares herramientas de compresión de Unix gzip y bzip2 .

Al igual que gzip y bzip, xz y lzma solo pueden comprimir archivos individuales (o flujos de datos) como entrada. No pueden agrupar varios archivos en un solo archivo  ; para ello, primero se utiliza un programa de compresión, como tar .

Comprimir un archivo:

xz  my_archive.tar # resultados en my_archive.tar.xz
lzma my_archive.tar # resultados en my_archive.tar.lzma   

Descomprimiendo el archivo:

unxz  my_archive.tar.xz # resultados en my_archive.tar
unlzma my_archive.tar.lzma # resultados en my_archive.tar   

La versión 1.22 o mayor de la implementación GNU de tar tiene soporte transparente para archivos tar comprimidos con lzma y xz, usando los modificadores --xz o -Jpara compresión xz, y --lzmapara compresión LZMA.

Creando un archivo y comprimiéndolo:

tar  -c  --xz  -f  mi_archivo.tar.xz  /algun_directorio # resultados en mi_archivo.tar.xz
tar -c --lzma -f mi_archivo.tar.lzma /algun_directorio # resultados en mi_archivo.tar.lzma       

Descomprimiendo el archivo y extrayendo su contenido:

tar  -x  --xz  -f  mi_archivo.tar.xz # resultados en /algun_directorio
tar -x --lzma -f mi_archivo.tar.lzma # resultados en /algun_directorio      

Ejemplo de tar de una sola letra para archivar con compresión y descompresión con extracción usando sufijo corto :

tar  cJf  keep.txz  keep # archiva y luego comprime el directorio ./keep/ en el archivo ./keep.txz
tar xJf keep.txz # descomprime y luego extrae el archivo ./keep.txz creando el directorio ./keep/    

xz ha admitido la compresión multiproceso (con la -Tbandera) [6] desde 2014, versión 5.2.0; [7] desde la versión 5.4.0 se ha implementado la descompresión por subprocesos. La descompresión por subprocesos requiere múltiples bloques comprimidos dentro de una secuencia que son creados por la interfaz de compresión por subprocesos. La cantidad de subprocesos puede ser menor que la definida si el archivo no es lo suficientemente grande para la compresión por subprocesos con la configuración dada o si el uso de más subprocesos excedería el límite de uso de memoria. [6]

El formato xz

El formato xz mejora el lzma al permitir filtros de preprocesamiento. Los filtros exactos utilizados son similares a los utilizados en 7z , ya que los filtros de 7z están disponibles en el dominio público a través del SDK de LZMA.

Desarrollo y adopción

El desarrollo de XZ Utils se llevó a cabo dentro del Proyecto Tukaani, un pequeño grupo de desarrolladores que en su día mantuvieron una distribución Linux basada en Slackware . El nombre elegido "XZ" no es una abreviatura, sino que parece ser un nombre aleatorio para los compresores de datos, ya que no hay ninguna mención en ninguna parte de la especificación oficial sobre el significado de "XZ". [8] La versión 1.0.0 de la especificación del formato de archivo .xz se publicó oficialmente en enero de 2009. [9]

Todo el código fuente de xz y liblzma ha sido liberado al dominio público . La distribución del código fuente de XZ Utils incluye además algunos scripts opcionales y un programa de ejemplo que están sujetos a varias versiones de la Licencia Pública General de GNU (GPL). [1] Los binarios del software xz y liblzma resultantes son de dominio público, a menos que se incorpore la implementación opcional de getopt de la LGPL . [10]

Los binarios están disponibles para FreeBSD , NetBSD , sistemas Linux , Microsoft Windows y FreeDOS . Varias distribuciones Linux , incluidas Fedora , Slackware , Ubuntu y Debian , utilizan xz para comprimir sus paquetes de software. Arch Linux anteriormente usaba xz para comprimir paquetes, [11] pero a partir del 27 de diciembre de 2019, los paquetes se comprimen con compresión Zstandard . [12] Fedora Linux también cambió a la compresión de sus paquetes RPM con Zstandard con Fedora Linux 31. [13] El archivo FTP de GNU también usa xz.

Incidente de puerta trasera

El 29 de marzo de 2024, Andres Freund, un desarrollador de PostgreSQL que trabaja en Microsoft , anunció que había encontrado una puerta trasera en XZ Utils, que afectaba a las versiones 5.6.0 y 5.6.1. Se habían añadido archivos de prueba comprimidos al código para configurar la puerta trasera mediante adiciones al script de configuración en los archivos tar . Comenzó su investigación porque "después de observar algunos síntomas extraños en torno a liblzma (parte del paquete xz)", ya que descubrió que los inicios de sesión ssh que usaban sshd"estaban consumiendo mucha CPU , errores de valgrind ". [14] La vulnerabilidad recibió una puntuación de 10 (la más alta) en el Common Vulnerability Scoring System (CVSS). [15]

Referencias

  1. ^ ab Licencias en tukaani.org "Las partes más interesantes de XZ Utils (por ejemplo, liblzma) son de dominio público. Puedes hacer lo que quieras con las partes de dominio público. Algunas partes de XZ Utils (por ejemplo, el sistema de compilación y algunas utilidades) están bajo diferentes licencias de software libre, como GNU LGPLv2.1, GNU GPLv2 o GNU GPLv3".
  2. ^ LZMA Util , consultado el 25 de enero de 2011
  3. ^ Vivek, Gite. "Cómo comprimir todo el directorio usando xz y tar en Linux". Por ejemplo, comprimí un directorio que tenía un tamaño de 37M usando tanto xz como zip. El tamaño del archivo zip era de 31M, mientras que el archivo xz era de 16M después de la compresión.
  4. ^ Henry-Stocker, Sandra (12 de diciembre de 2017). "Cómo aprovechar al máximo la compresión de archivos de Linux". Network World . Consultado el 9 de febrero de 2020 .
  5. ^ "Comparación de rendimiento de Gzip, Bzip2 y XZ". RootUsers . 2015-09-16 . Consultado el 2020-02-09 .
  6. ^ ab "xz, unxz, xzcat, lzma, unlzma, lzcat – Comprime o descomprime archivos .xz y .lzma". Páginas de manual de Linux en línea .
  7. ^ "Notas de la versión de XZ Utils". git.tukaani.org .
  8. ^ "Especificación oficial del XZ". tukaani.org . Lasse Collin . Consultado el 8 de octubre de 2024 .
  9. ^ Lasse Collin (28 de enero de 2009). "Noticias: La versión 1.0.0 de la especificación del formato de archivo .xz ya se ha publicado oficialmente".
  10. ^ "¿En qué casos la salida de un programa GPL también está cubierta por la GPL?". GNU.org . Consultado el 21 de agosto de 2019 .
  11. ^ Pierre Schmitz (23 de marzo de 2010). "Noticias: Cambio a la compresión xz para los nuevos paquetes".
  12. ^ "Arch Linux - Novedades: ahora se utiliza Zstandard en lugar de xz para la compresión de paquetes". www.archlinux.org . Consultado el 7 de enero de 2020 .
  13. ^ Mach, Daniel. "Cambios/cambios de RPM a compresión zstd". Wiki del proyecto Fedora . Consultado el 30 de marzo de 2024 .
  14. ^ "oss-security - puerta trasera en xz/liblzma que conduce a un servidor ssh comprometido". www.openwall.com . Consultado el 8 de abril de 2024 .
  15. ^ "Una puerta trasera en xz". LWN.net . Consultado el 30 de marzo de 2024 .

Enlaces externos