compress es un programa de compresión de shell de Unix basado en el algoritmo de compresión LZW . [1] En comparación con la configuración más rápida de gzip , compress es ligeramente más lento en la compresión, ligeramente más rápido en la descompresión y tiene una relación de compresión significativamente menor . [2] Se utilizan 1,8 MiB de memoria para comprimir los datos del Premio Hutter , un poco más que la configuración más lenta de gzip. [3]
La utilidad de descompresión restaurará los archivos a su estado original después de haberlos comprimido con la utilidad de compresión . Si no se especifica ningún archivo, la entrada estándar se descomprimirá en la salida estándar.
En la próxima revisión de las especificaciones POSIX y Single Unix , está previsto que el algoritmo DEFLATE utilizado en formato gzip sea compatible con esas utilidades. [4]
Los archivos comprimidos por compress suelen tener la extensión ".Z" (modelada a partir del programa pack anterior que utilizaba la extensión ".z"). La mayoría de los programas tar canalizarán sus datos a través de compress cuando se les dé la opción de línea de comandos " -Z
". (El programa tar en sí no comprime; simplemente almacena múltiples archivos dentro de un archivo de cinta).
Los archivos se pueden devolver a su estado original mediante la función descomprimir . La acción habitual de descomprimir no es simplemente crear una copia sin comprimir del archivo, sino también restaurar la marca de tiempo y otros atributos del archivo comprimido.
Para los archivos producidos por compresión en otros sistemas, la descompresión admite una compresión de 9 a 16 bits.
El algoritmo LZW utilizado en compress fue patentado por Sperry Research Center en 1983. Terry Welch publicó un artículo IEEE sobre el algoritmo en 1984, [5] pero no mencionó que había solicitado una patente para el algoritmo. Spencer Thomas de la Universidad de Utah tomó este artículo e implementó compress en 1984, sin darse cuenta de que había una patente pendiente sobre el algoritmo LZW. El formato de imagen GIF también incorporó la compresión LZW de esta manera, y Unisys luego reclamó regalías por las implementaciones de GIF. Joseph M. Orost dirigió el equipo y trabajó con Thomas et al. para crear la versión "final" (4.0) de compress y la publicó como software libre para el grupo USENET "net.sources" en 1985. La patente estadounidense 4.558.302 se concedió en 1985, y es por eso que compress no se podía usar sin pagar regalías a Sperry Research, que finalmente se fusionó con Unisys.
compress ha caído en desgracia en grupos particulares de usuarios debido a que hace uso del algoritmo LZW, que estaba cubierto por una patente de Unisys – debido a esto, gzip y bzip2 aumentaron en popularidad en sistemas operativos basados en Linux debido a sus algoritmos alternativos, junto con una mejor compresión de archivos. compress , sin embargo, ha mantenido una presencia en sistemas Unix y BSD y los comandos compress y uncompress también han sido portados al sistema operativo IBM i . [6]
La patente estadounidense LZW expiró en 2003, por lo que ahora es de dominio público en los Estados Unidos. Todas las patentes de LZW en todo el mundo también han expirado (consulte Formato de intercambio de gráficos#Unisys y aplicación de patentes de LZW ).
En la próxima revisión de las especificaciones POSIX y Single Unix , está previsto que el algoritmo DEFLATE utilizado en formato gzip sea compatible con esas utilidades.
El binario de salida consta de grupos de bits. Cada grupo de bits consta de códigos con una cantidad fija de bits (9-16). Cada grupo, excepto el último, está alineado con la cantidad de bits por código multiplicado por 8 y se rellena con ceros a la derecha. El último grupo está alineado con octetos de 8 bits y se rellena con ceros. Se puede encontrar más información en un problema en el repositorio de GitHub de ncompress . [7]
Ejemplo:
En realidad , es un error. LZW no requiere ninguna alineación. Este error existió durante más de 35 años y se encontraba en el compress original de UNIX , ncompress , gzip y en el port de Windows. Todos los archivos de application/x-compress se crearon utilizando este error.
Algunas implementaciones de compresión escriben bits aleatorios de un búfer no inicializado en los rellenos. No hay garantía de que los rellenos sean ceros. El descompresor debe ignorar los valores en los rellenos por cuestiones de compatibilidad.
La compresión se estandarizó en la especificación X/Open CAE en 1994, [8] y luego en las especificaciones base de The Open Group, números 6 y 7. [9] La base estándar de Linux no requiere compresión. [10]
Compress a menudo no se instala de forma predeterminada en las distribuciones de Linux, pero se puede instalar desde un paquete adicional. [11] Compress está disponible para FreeBSD, OpenBSD, MINIX, Solaris y AIX.
La compresión está permitida para el protocolo punto a punto en RFC 1977 y para HTTP/1.1 en RFC 9110, aunque rara vez se utiliza en implementaciones modernas ya que está disponible la mejor opción deflate/gzip.
La utilidad gunzip puede descomprimir archivos .Z. [12]
es un compresor de archivos LZW rápido y sencillo. Compress no tiene la tasa de compresión más alta, pero es uno de los programas más rápidos para comprimir datos. Compress es el estándar de facto en la comunidad UNIX para comprimir archivos.
compress 4.3d....
Actualmente, gunzip puede descomprimir archivos creados con gzip, zip, compress o pack. La detección del formato de entrada es automática.