¿Qué software de compresión de archivos para Linux ofrece la mayor reducción de tamaño? [cerrado]

51

Hago un montón de compresión de archivos. La mayoría de las cosas que estoy comprimiendo es solo código, por lo que necesito usar menos compresión de pérdida. Me preguntaba si había algo que ofreciera una mejor reducción de tamaño que 7zip. No importa cuánto tiempo tome comprimir o descomprimir, el tamaño es lo único que importa. ¿Alguien sabe de un software como este en Linux? ¿O es 7zip el mejor?

Zach
fuente

Respuestas:

37

7zipes más un compactador (como PKZIP) que un compresor. Está disponible para Linux, pero solo puede crear archivos comprimidos en archivos normales, por ejemplo, no puede comprimir una secuencia. No es capaz de almacenar la mayoría de los atributos de archivos Unix como propiedad, ACL, atributos extendidos, enlaces duros ...

En Linux, como compresor , tienes xzque usa el mismo algoritmo de compresión que 7zip(LZMA2). Puede usarlo para comprimir archivos tar.

Al igual que para gzipy bzip2, hay una variante paralelapixz que puede aprovechar varios procesadores para acelerar la compresión ( xztambién puede hacerlo de forma nativa desde la versión 5.2.0 con la -Topción). La pixzvariante también admite la indexación de un tararchivo comprimido, lo que significa que puede extraer un solo archivo sin tener que descomprimirlo desde el principio.

Stéphane Chazelas
fuente
66
¿Puede ampliar la distinción entre "compactador" y "compresor" que está haciendo aquí?
mattdm
2
@mattdm, un compresor solo comprime, un compactador compacta varias cosas en un archivo comprimido.
Stéphane Chazelas
2
@mattdm, extraño. Era una terminología y distinción muy común en los años 90, parece una búsqueda en Google, ya no es el caso.
Stéphane Chazelas
66
Tal vez fue una cosa de DOS? En Unix, la distinción entre compresión y archivado se hace comúnmente (como usted también dice), pero nunca escuché "compactador".
mattdm
1
@mattdm, bueno, compacto es archivar + comprimir (posiblemente con indexación, posiblemente miembros comprimidos por separado), el archivado no implica compresión. No es una cosa de DOS, pero posiblemente fue una cosa francesa. Buscando en Google los archivos de Usenet, parece que solo encuentro artículos míos, por lo que bien podría haber sido mi invención, aunque creo firmemente que no lo es.
Stéphane Chazelas
65

lrzip es lo que realmente estás buscando, ¡ especialmente si estás comprimiendo el código fuente!

Citando el README:

Este es un programa de compresión optimizado para archivos grandes. Cuanto más grande sea el archivo y más memoria tenga, mejor será la ventaja de compresión que esto proporcionará, especialmente una vez que los archivos tengan más de 100 MB. La ventaja se puede elegir para que sea tamaño (mucho más pequeño que bzip2) o velocidad (mucho más rápido que bzip2). [...] La característica única de lrzip es que intenta aprovechar al máximo la memoria RAM disponible en su sistema en todo momento para obtener el máximo beneficio.

lrzip funciona primero escaneando y eliminando cualquier redundancia de datos de larga distancia con un algoritmo basado en rzip, luego comprimiendo los datos no redundantes.

Con Kolivas proporciona un ejemplo fantástico en la lista de correo del kernel de Linux ; en donde comprime un tarball de 10.3GB de cuarenta versiones de Kernel de Linux hasta 163.9MB (1.6%), y lo hace más rápido que xz. ¡Ni siquiera estaba usando el algoritmo de segundo paso más agresivo!

Estoy seguro de que obtendrás excelentes resultados al comprimir grandes cantidades de código fuente :)

sudo apt-get install lrzip

Ejemplo (usando las opciones predeterminadas para otros):

Ultra compresión, perro lento:

lrzip -z file

Para carpetas, simplemente cambie lrzipporlrztar

Alexander Riccio
fuente
1
También puedo impugnar que lrziptambién funciona muy bien para las copias de seguridad de tar/cpio/paxlos árboles de archivos del sistema ed, porque generalmente contienen muchas redundancias de largo alcance, algo que lrzipes realmente bueno para comprimir.
Franki
10
Lo intenté lrzipy pixzen un archivo de texto de 19 GB. Ambos tardaron aproximadamente media hora en comprimirlo (en una máquina hexa-core), pero el lrzarchivo tenía la mitad del tamaño del xzarchivo (2.7 frente a 4.4 GB). Entonces, otro voto para esta respuesta en su lugar.
fnl
3
@Franki por 'concurso', ¿quieres decir 'atestiguar'?
mitchus
Se siente como flautista!
Denys Vitali
1
¿Sabes cuál sería la diferencia entre lrzip y rzip? Parece que rzip fue lanzado en 1998, diseñado para funcionar mejor en archivos muy grandes con redundancia de larga distancia, por lo que suena similar a lrzip, ¿me pregunto si lrzip se deriva de rzip? (rzip de rzip.samba.org )
Astara
6

Si está buscando la mayor reducción de tamaño independientemente de la velocidad de compresión, LZMAes probable que sea su mejor opción.

Al comparar las diversas compresiones, generalmente la compensación es tiempo versus tamaño. gziptiende a comprimir y descomprimir relativamente rápido mientras produce una buena relación de compresión. bzip2es algo más lento que el gziptiempo de compresión y descompresión, pero produce relaciones de compresión aún mayores. LZMAtiene el tiempo de compresión más largo, pero produce las mejores relaciones, a la vez que tiene una tasa de descompresión superior a la de bzip2.

Fuentes: http://bashitout.com/2009/08/30/Linux-Compression-Comparison-GZIP-vs-BZIP2-vs-LZMA-vs-ZIP-vs-Compress.html

http://tukaani.org/lzma/benchmarks.html

j883376
fuente
1
¡Necesito estar en desacuerdo con este! El compresor de archivos sin pérdida que proporciona el mayor factor de reducción, independientemente de la velocidad de compresión que funciona en GNU / Linux, probablemente sea zpaqo paq8l. Sin embargo, son tan lentos que no son prácticos para la mayoría de los usos del mundo real.
Franki
@Franki genial sudo apt-get install zpaq, hice algunas pruebas, según wiki , esa aplicación sería la más nueva de 2009, pero aún pierde por kgb (que usa PAQ6), pero kgb es MUCHO más lento ...
Aquarius Power
@Franki en realidad, acabo de descubrir que zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tarcomprime más quekgb -9
Aquarius Power
4

(respuesta actualizada) Si el tiempo no importa, use ZPAQ v1.10 (o más reciente) ej .:
zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar (la ubicación del archivo max.cfg puede variar, verifique la lista de archivos del paquete instalado)

zpaqen realidad comprimido más que kgb -9 newFileName.kgb yourFileName.tar.
Eso se basa en el algoritmo antiguo PAQ6 , y es muy lento ... ¡
Lo probé con todos los otros compresores como 7zip, lrzip, bzip2, kgb ... y zpaq más comprimido!

Si kgbaún le interesa: (ya que fue mi elección inicial en esta respuesta, así que guardo la información aquí)
Ubuntu 14.04 tiene kgb 1.0b4 , ejecute sudo apt-get install kgbpara instalarlo.

A continuación se muestra una versión de Windows que puede intentar ejecutar / compilar kgben Linux, pero no tuve éxito.
La versión 2 beta2 se puede encontrar en SourceForge , pero no hay binarios de Linux disponibles. Puede intentar ejecutarlo en la consola con wine kgb2_console.exe -a7 -m9(el método -a6 -m9parece ser equivalente al mejor método en 1.0b4, -a7es nuevo en 2 beta2). Aunque tuve una mejor estabilidad al instalar .NET 2.0 con winetricks y ejecutarlo wine "KGB Archiver 2 .net.exe"(no me gusta un poco hacerlo, así que me quedaré con Linux 1.0b4 nativo que tiene casi el mismo resultado que 2 beta2).
De todos modos, la versión 2 beta2 también merece una versión nativa de Linux. Tal vez se pueda lograr algo con MinGW, mira esto , pero este comando aún falla gravemente:i586-mingw32msvc-g++ kgb2_console.cpp -o kgb. ¿Se puede intentar compilarlo con dmcs(Mono)? ver este consejo .

Poder de acuario
fuente
2

7zip no es una tecnología única, pero admite varios métodos de compresión diferentes (ver wikipedia 7z sobre eso).

Se realizó un conjunto de pruebas con diferentes herramientas especialmente para archivos fuente C. No estoy seguro de cuáles herramientas existen para Linux si aún existen. Sin embargo, puede observar que el mejor algoritmo fue PPM con modificaciones (PPMII, luego PPMZ).

Si está interesado en las herramientas, puede navegar por el sitio, está en ruso, pero el traductor de Google puede ayudar. Hay un gran depósito de archivos binarios , que puede usar (o no podrá) desde Linux con wine, si es realmente necesario.

Yaroslav Nikitenko
fuente