Ce software de comprimare a fișierelor pentru Linux oferă cea mai mare reducere de dimensiune? [închis] (Unix, Compresie)

Zach a intrebat.

Fac o tonă de comprimare a fișierelor. Cea mai mare parte a lucrurilor pe care le comprim este doar cod, așa că trebuie să folosesc o comprimare mai mică a pierderilor. Mă întrebam dacă există ceva care oferă o reducere mai bună a dimensiunii decât 7zip. Nu contează cât timp durează comprimarea sau decomprimarea, dimensiunea este tot ce contează. Cunoaște cineva un astfel de software în Linux? Sau 7zip este cel mai bun?

5 răspunsuri
Stéphane Chazelas

7zip este mai mult un compactor (ca PKZIP) decât un compresor. Este disponibil pentru Linux, dar poate crea doar arhive comprimate în fișiere obișnuite, nu este capabil să comprime un flux de exemplu. Nu este capabil să stocheze majoritatea atributelor fișierelor Unix, cum ar fi proprietatea, ACL, atributele extinse, legăturile permanente…

Pe Linux, ca compresor, aveți xz care utilizează același algoritm de compresie ca și 7zip (LZMA2). Îl puteți utiliza pentru a comprima arhivele tar.

La fel ca pentru gzip și bzip2, , există o funcție paralelă variantă paralelă pixz care poate folosi mai multe procesoare pentru a accelera compresia (xz o poate face, de asemenea, în mod nativ, începând cu versiunea 5.2.0, cu -T opțiune). Site-ul pixz varianta suportă și indexarea un fișier comprimat tar arhivă comprimată, ceea ce înseamnă că este capabilă să extragă un singur fișier fără a fi nevoită să decomprime fișierul de la început.

Comentarii

  • Puteți să detaliați distincția dintre „compactor” și „compresor” pe care o faceți aici? –  > Por mattdm.
  • @mattdm, un compresor comprimă doar, un compactor compactează mai multe lucruri într-o arhivă comprimată. –  > Por Stéphane Chazelas.
  • @mattdm, ciudat. Era o terminologie și o distincție foarte comună în anii ’90, se pare că, dintr-o căutare pe Google, nu mai este cazul. –  > Por Stéphane Chazelas.
  • Poate că a fost o chestie de DOS? În Unix, distincția dintre compresie și arhivare se face în mod obișnuit (așa cum spuneți și dumneavoastră), dar nu am auzit niciodată de „compactor”. –  > Por mattdm.
  • @mattdm, păi, compact este arhivare+comprimare (eventual cu indexare, eventual membri comprimați separat), arhivarea nu implică compresie. Nu este o chestie de DOS, dar posibil să fi fost o chestie franțuzească. Căutând pe Google arhivele usenet, se pare că dau numai de articole ale mele, deci s-ar putea foarte bine să fi fost invenția mea, deși cred cu tărie că nu este. –  > Por Stéphane Chazelas.
Alexander Riccio

lrzip este ceea ce de fapt căutați, în special dacă comprimați codul sursă!

Citez din README:

Acesta este un program de compresie optimizat pentru fișiere mari. Cu cât fișierul este mai mare și cu cât aveți mai multă memorie, cu atât mai bun va fi avantajul de compresie pe care îl va oferi, mai ales când fișierele depășesc 100 MB. Avantajul poate fi ales fie ca dimensiune (mult mai mic decât bzip2), fie ca viteză (mult mai rapid decât bzip2). […]Caracteristica unică a lui lrzip este că încearcă să folosească la maximum memoria RAM disponibilă în sistem în orice moment, pentru a obține beneficii maxime.

lrzip funcționează mai întâi prin scanarea și eliminarea oricărei redundanțe de date pe distanțe lungi cu un algoritm bazat pe rzip, apoi comprimarea datelor neredundante.

Con Kolivas oferă un exemplu fantastic în Linux Kernel Mailing List; în care comprimă un tarball de 10,3 GB de patruzeci de versiuni Linux Kernel până la 163,9MB (1,6%), și face acest lucru mai repede decât xz. El nici măcar nu folosea cel mai agresiv algoritm de a doua trecere!

Sunt sigur că veți avea rezultate excelente la comprimarea unor pachete masive de cod sursă 🙂

sudo apt-get install lrzip

Exemplu (folosind valorile implicite pentru celelalte opțiuni):

Ultra compresie, câine lent:

lrzip -z file

Pentru foldere, schimbați doar lrzip pentru lrztar

Comentarii

  • De asemenea, pot contesta faptul că lrzip funcționează foarte bine și pentru copii de rezervă pentru tar/cpio/pax‘ed copaci de fișiere de sistem, deoarece acestea conțin de obicei o mulțime de redundanțe pe distanțe lungi, ceva ce lrzip este foarte bun la compresie. –  > Por Franki.
  • Am încercat lrzip și pixz pe un fișier text de 19 GB. Ambele au avut nevoie de aproximativ o jumătate de oră pentru a-l comprima (pe o mașină hexa-core), dar lrz a fost la jumătate din dimensiunea fișierului xz fișier (2,7 față de 4,4 GB). Deci, încă un vot pentru acest răspuns în schimb. –  > Por fnl.
  • @Franki prin „contest”, vrei să spui „atestare”? –  > Por mitchus.
  • Se simte ca Pied Piper! –  > Por Denys Vitali.
  • Știi care ar fi diferența dintre lrzip și rzip? rzip pare să fi fost lansat în 1998, conceput pentru a se descurca cel mai bine cu fișiere foarte mari, cu redundanță pe distanțe lungi, așa că sună similar cu lrzip – mă întrebam dacă lrzip a fost derivat din rzip? (rzip din rzip.samba.org) –  > Por Astara.
j883376

Dacă sunteți în căutarea celei mai mari reduceri de dimensiune, indiferent de viteza de compresie, LZMA este probabil cea mai bună opțiune.

Atunci când comparați diferitele compresii, în general, compromisul este timp vs. dimensiune. gzip tinde să comprime și să decomprime relativ repede, oferind în același timp un raport de compresie bun. bzip2 este ceva mai lent decât gzip atât în ceea ce privește timpul de compresie, cât și în ceea ce privește timpul de decompresie, dar oferă rate de compresie chiar mai mari. LZMA are cel mai lung timp de compresie, dar produce cele mai bune rapoarte, având în același timp o rată de decompresie mai mare decât cea a lui bzip2.

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

Comentarii

  • Trebuie să nu fiu de acord cu această afirmație! Compresorul de fișiere fără pierderi care oferă cel mai mare factor de reducere indiferent de viteza de compresie și care funcționează pe GNU/Linux este probabil fie zpaq fie paq8l. Cu toate acestea, ele sunt atât de lente încât sunt nepractice pentru majoritatea utilizărilor din lumea reală. –  > Por Franki.
  • @Franki cool sudo apt-get install zpaq, , am făcut câteva teste, conform wiki, , acea aplicație ar fi cea mai nouă din 2009, dar tot pierde pentru kgb (care folosește PAQ6), dar kgb este MULT mai lent… –  > Por Aquarius Power.
  • @Franki de fapt, tocmai am găsit că zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar comprimă mai mult decât kgb -9 –  > Por Aquarius Power.
  • @Franki Cum face zpaq sau paq81 se compară cu lrzip? –  > Por Alexej Magura.
Puterea Vărsătorului

(răspuns actualizat) Dacă timpul nu contează, folosiți ZPAQ v1.10 (sau mai nou) ex.:
zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar(locația fișierului max.cfg poate varia, verificați în lista de fișiere a pachetului instalat)

zpaq de fapt, a comprimat mai mult decât kgb -9 newFileName.kgb yourFileName.tar.
Care se bazează pe un algoritm mai vechi PAQ6, , și este foarte lent…
Am testat cu toate celelalte compresoare, cum ar fi 7zip, lrzip, bzip2, kgb… și zpaq a comprimat cel mai mult!

Dacă kgb încă te interesează totuși: (deoarece a fost alegerea mea inițială pentru acest răspuns, așa că păstrez informația aici)
Ubuntu 14.04 are kgb 1.0b4, , executați sudo apt-get install kgb pentru a-l instala.

Mai jos este vorba despre o versiune windows pe care puteți încerca să o rulați/compilați kgb pe linux, dar eu nu am reușit.
Versiunea 2 beta2 poate fi găsită pe SourceForge, , dar nu sunt disponibile binare pentru Linux. Puteți încerca să o rulați în consolă cu wine kgb2_console.exe -a7 -m9 (metoda -a6 -m9 pare a fi echivalentă cu cea mai bună metodă din 1.0b4, -a7 este nouă în 2 beta2). Deși am avut o stabilitate mai bună prin instalarea .NET 2.0 cu winetricks și rulând wine "KGB Archiver 2 .net.exe" (nu-mi place deloc să fac asta, așa că voi rămâne la Linux nativ 1.0b4 care are aproape același rezultat ca și 2 beta2).
Oricum, versiunea 2 beta2 merită serios și o versiune nativă Linux! Poate că se poate realiza ceva cu MinGW, vezi asta, dar această comandă tot dă greș rău de tot: i586-mingw32msvc-g++ kgb2_console.cpp -o kgb. Poate încercați să o compilați cu dmcs (Mono)? vezi acest sfat.

Yaroslav Nikitenko

7zip nu este o tehnologie unică, ci suportă mai multe metode de compresie diferite (vezi wikipedia 7z în acest sens).

A set de teste a fost efectuat cu diferite instrumente special pentru fișierele sursă C. Nu sunt sigur care dintre aceste instrumente există pentru Linux, dacă mai există. Cu toate acestea, puteți observa că cel mai bun algoritm a fost PPM cu modificări (PPMII, apoi PPMZ).

Dacă vă interesează instrumentele, puteți naviga pe site, este în limba rusă, dar google translate vă poate ajuta. Există un depozit mare de binare, , pe care le puteți folosi (sau nu veți putea) din Linux cu wine, dacă este cu adevărat necesar.