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 gratuito , incluidos 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 una adaptación 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 heredado , [2] XZ Utils comprime de forma predeterminada a xz.

En la mayoría de los casos, xz logra tasas de compresión más altas que alternativas como 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 altos niveles de compresión, y es más útil cuando un archivo comprimido se usará muchas veces. [3] [4]

XZ Utils consta de dos componentes principales:

Existen varios atajos de comando, 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 del archivo han sido diseñados para funcionar de manera 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 archivo, 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 superior de la implementación GNU de tar tiene soporte transparente para archivos tar comprimidos con lzma y xz, usando los conmutadores --xz o -Jpara la compresión xz, y --lzmapara la compresión LZMA.

Creando un archivo y comprimiéndolo:

tar  -c  --xz  -f  mi_archivo.tar.xz  /algún_directorio # da como resultado mi_archivo.tar.xz
tar -c --lzma -f mi_archivo.tar.lzma /algún_directorio # da como resultado mi_archivo.tar.lzma       

Descomprimiendo el archivo y extrayendo su contenido:

tar  -x  --xz  -f  my_archive.tar.xz # da como resultado /algún_directorio
tar -x --lzma -f my_archive.tar.lzma # da como resultado /algún_directorio      

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

tar  cJf  keep.txz  mantener # archivo y luego comprimir el directorio ./keep/ en el archivo ./keep.txz
tar xJf keep.txz # descomprimir y luego extraer el archivo ./keep.txz creando el directorio ./keep/    

xz admite la compresión multiproceso (con la -Tbandera) [5] desde 2014, versión 5.2.0; [6] desde la versión 5.4.0 se ha implementado la descompresión de subprocesos. La descompresión por subprocesos requiere múltiples bloques comprimidos dentro de una secuencia que se crean mediante 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 subprocesos con la configuración dada o si el uso de más subprocesos excedería el límite de uso de memoria. [5]

El formato xz

El formato xz mejora a 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 alguna vez mantuvieron una distribución de Linux basada en Slackware .

Todo el código fuente de xz y liblzma ha sido liberado al dominio público . La distribución 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 GNU (GPL). [1] Los binarios resultantes del software xz y liblzma son de dominio público, a menos que se incorpore la implementación opcional LGPL getopt . [7]

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

Incidente de puerta trasera

El 29 de marzo de 2024, Andrés 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 agregaron 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)", descubrió que los inicios de sesión sshsshd estaban "consumiendo muchos errores de CPU y valgrind ". [11] La vulnerabilidad recibió una puntuación de 10 (la más alta) en el Sistema de puntuación de vulnerabilidad común (CVSS). [12]

Referencias

  1. ^ ab Licencia 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, 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. ^ Henry-Stocker, Sandra (12 de diciembre de 2017). "Cómo aprovechar al máximo la compresión de archivos de Linux". Mundo de la Red . Consultado el 9 de febrero de 2020 .
  4. ^ "Comparación de rendimiento de Gzip, Bzip2 y XZ". Usuarios raíz . 2015-09-16 . Consultado el 9 de febrero de 2020 .
  5. ^ ab "xz, unxz, xzcat, lzma, unlzma, lzcat: comprime o descomprime archivos .xz y .lzma". Páginas de manual de Linux en línea .
  6. ^ "Notas de la versión de XZ Utils". git.tukaani.org .
  7. ^ "¿En qué casos el resultado de un programa GPL también está cubierto por la GPL?". GNU.org . Consultado el 21 de agosto de 2019 .
  8. ^ Pierre Schmitz (23 de marzo de 2010). "Noticias: Cambio a compresión xz para nuevos paquetes".
  9. ^ "Arch Linux - Noticias: ahora se usa Zstandard en lugar de xz para la compresión de paquetes". www.archlinux.org . Consultado el 7 de enero de 2020 .
  10. ^ Mach, Daniel. "Cambia / Cambia las RPM a compresión zstd". Wiki del Proyecto Fedora . Consultado el 30 de marzo de 2024 .
  11. ^ "oss-security: puerta trasera en xz/liblzma ascendente que compromete el servidor ssh". www.openwall.com . Consultado el 8 de abril de 2024 .
  12. ^ "Una puerta trasera en xz". LWN.net . Consultado el 30 de marzo de 2024 .

enlaces externos