Quale software di compressione file per Linux offre la riduzione della dimensione massima? [chiuso]


51

Faccio un sacco di compressione dei file. La maggior parte delle cose che sto comprimendo è solo codice, quindi ho bisogno di usare la perdita meno compressione. Mi chiedevo se c'era qualcosa che offre una riduzione delle dimensioni migliore di 7zip. Non importa quanto tempo ci vuole per comprimere o decomprimere, la dimensione è tutto ciò che conta. Qualcuno sa di un software come questo in Linux? O 7zip è il migliore?

Risposte:


37

7zipè più un compattatore (come PKZIP) che un compressore. È disponibile per Linux, ma può solo creare archivi compressi in file regolari, ad esempio non è in grado di comprimere un flusso. Non è in grado di memorizzare la maggior parte degli attributi di file Unix come proprietà, ACL, attributi estesi, collegamenti reali ...

Su Linux, come compressore , hai xzquello che usa lo stesso algoritmo di compressione di 7zip(LZMA2). Puoi usarlo per comprimere gli archivi tar.

Come per gzipe bzip2, c'è una variante parallelapixz che può sfruttare diversi processori per accelerare la compressione ( xzpuò anche farlo nativamente dalla versione 5.2.0 con l' -Topzione). La pixzvariante supporta anche l' indicizzazione di un tararchivio compresso , il che significa che è in grado di estrarre un singolo file senza dover decomprimere il file dall'inizio.


6
Puoi espandere la distinzione tra "compattatore" e "compressore" che stai facendo qui?
Mattdm,

2
@mattdm, un compressore comprime solo, un compattatore compatta diverse cose in un archivio compresso.
Stéphane Chazelas,

2
@mattdm, strano. Era una terminologia e una distinzione molto comune negli anni '90, sembra da una ricerca su Google, non è più il caso.
Stéphane Chazelas,

6
Forse era una cosa DOS? In Unix, la distinzione tra compressione e archiviazione è comunemente fatta (come dici anche tu), ma non ho mai sentito "compattatore".
Mattdm,

1
@mattdm, beh, compact è archive + compress (possibilmente con indicizzazione, eventualmente membri compressi separatamente), l'archiviazione non implica la compressione. Non è una cosa DOS, ma forse era una cosa francese. Cercando su Google gli archivi di usenet, mi sembra di imbattermi in articoli solo per me, quindi potrebbe essere stata una mia invenzione, anche se credo fermamente che non lo sia.
Stéphane Chazelas,

65

lrzip è quello che stai davvero cercando, specialmente se stai comprimendo il codice sorgente!

Citando il README:

Questo è un programma di compressione ottimizzato per file di grandi dimensioni. Maggiore è il file e maggiore è la memoria disponibile, migliore sarà il vantaggio di compressione che ciò fornirà, soprattutto una volta che i file superano i 100 MB. Il vantaggio può essere scelto come dimensione (molto più piccola di bzip2) o velocità (molto più veloce di bzip2). [...] La caratteristica unica di lrzip è che cerca sempre di sfruttare al massimo la RAM disponibile nel tuo sistema per il massimo beneficio.

lrzip funziona prima scansionando e rimuovendo qualsiasi ridondanza di dati a lunga distanza con un algoritmo basato su rzip, quindi comprimendo i dati non ridondanti.

Con Kolivas fornisce un fantastico esempio nella Mailing List del kernel Linux ; in cui comprime un tarball da 10,3 GB di quaranta versioni del kernel Linux fino a 163,9 MB (1,6%) e lo fa più velocemente di xz. Non stava nemmeno usando l'algoritmo di secondo passaggio più aggressivo!

Sono sicuro che otterrai grandi risultati comprimendo enormi tarball di codice sorgente :)

sudo apt-get install lrzip

Esempio (utilizzo predefinito per altre opzioni):

Ultra compressione, cane lento:

lrzip -z file

Per le cartelle, basta cambiare lrzipperlrztar


1
Posso anche contestare che lrzipfunziona davvero alla grande anche per i backup degli tar/cpio/paxalberi dei file di sistema, perché quelli di solito contengono molti ridondamenti a lungo raggio, qualcosa che lrzipè davvero bravo a comprimere.
Franki,

10
Ho provato lrzipe pixzsu un file di testo da 19 GB. Entrambi hanno impiegato circa mezz'ora per comprimerlo (su una macchina hexa-core), ma il lrzfile aveva la metà della dimensione del xzfile (2,7 contro 4,4 GB). Quindi, un altro voto per questa risposta.
fnl

3
@Franki per "contest", vuoi dire con "attest"?
mitchus,

Si sente come Pied Piper!
Denys Vitali,

1
Sai quale sarebbe la differenza tra lrzip e rzip? Sembra che rzip sia stato rilasciato nel 1998, progettato per funzionare al meglio su file molto grandi con ridondanza a lunga distanza, quindi sembra simile a lrzip - ti stai solo chiedendo se lrzip è derivato da rzip? (rzip da rzip.samba.org )
Astara,

6

Se stai cercando la massima riduzione delle dimensioni indipendentemente dalla velocità di compressione, LZMAè probabilmente l'opzione migliore.

Quando si confrontano le varie compressioni, generalmente il compromesso è tempo vs. dimensione. gziptende a comprimersi e decomprimersi relativamente rapidamente offrendo un buon rapporto di compressione. bzip2è un po 'più lento rispetto al gziptempo di compressione e decompressione, ma produce rapporti di compressione ancora maggiori. LZMAha il tempo di compressione più lungo ma produce i rapporti migliori pur avendo un tasso di decompressione che supera quello di bzip2.

Fonti: 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


1
Ho bisogno di non essere d'accordo su questo! Il compressore di file lossless che fornisce il massimo fattore di riduzione indipendentemente dalla velocità di compressione che funziona su GNU / Linux è probabilmente zpaqo paq8l. Tuttavia, sono così lenti che non sono pratici per la maggior parte degli usi del mondo reale.
Franki,

@Francesco sudo apt-get install zpaq, ho fatto alcuni test, secondo wiki , che l'app sarebbe stata la più recente del 2009, ma perde ancora per kgb (che utilizza PAQ6), ma kgb è MOLTO più lento ...
Aquarius Power

@Franki in realtà, ho appena scoperto che zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tarcomprime più dikgb -9
Aquarius Power

4

(risposta aggiornata) Se il tempo non ha importanza, utilizzare ZPAQ v1.10 (o più recente) es .:
zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar (il percorso del file max.cfg può variare, controllare l'elenco dei file del pacchetto installato)

zpaqeffettivamente compresso più di kgb -9 newFileName.kgb yourFileName.tar.
Questo si basa sul vecchio algoritmo PAQ6 ed è molto lento ...
Ho testato con tutti gli altri compressori come 7zip, lrzip, bzip2, kgb .. e zpaq compressi di più!

Se kgbancora ti interessa comunque: (dato che era la mia scelta iniziale su questa risposta, quindi tengo le informazioni qui)
Ubuntu 14.04 ha kgb 1.0b4 , corri sudo apt-get install kgbper installarlo.

Di seguito è riportata una versione di Windows che puoi provare a eseguire / compilare kgbsu Linux, ma non ci sono riuscito.
La versione 2 beta2 è disponibile su SourceForge , ma non sono disponibili file binari Linux. Puoi provare a eseguirlo in console con wine kgb2_console.exe -a7 -m9(il metodo -a6 -m9sembra essere equivalente al metodo migliore in 1.0b4, -a7è nuovo in 2 beta2). Sebbene avessi una migliore stabilità installando .NET 2.0 con Winetrick ed eseguendolo wine "KGB Archiver 2 .net.exe"(non mi piace un po 'farlo, quindi continuerò con Linux 1.0b4 nativo che ha quasi lo stesso risultato di 2 beta2).
Comunque, la versione 2 beta2 merita seriamente anche una versione nativa di Linux! Forse qualcosa può essere realizzato con MinGW, vedi questo , ma questo comando fallisce ancora male:i586-mingw32msvc-g++ kgb2_console.cpp -o kgb. Si può provare a compilarlo con dmcs(Mono)? vedi questo consiglio .


2

7zip non è una tecnologia unica, ma supporta diversi metodi di compressione (vedi Wikipedia 7z su questo).

Una serie di test è stata eseguita con diversi strumenti appositamente per i file di origine C. Non sono sicuro di quali strumenti esistano per Linux se esistono ancora. Tuttavia, è possibile notare che l'algoritmo migliore era PPM con modifiche (PPMII, quindi PPMZ).

Se sei interessato agli strumenti, puoi navigare nel sito, è in russo ma google translate può aiutarti. C'è un grande deposito di file binari , che puoi usare (o non riuscire) da Linux con wine, se davvero necessario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.