Które oprogramowanie do kompresji plików dla systemu Linux oferuje najwyższą redukcję rozmiaru? [Zamknięte]


51

Robię mnóstwo kompresji plików. Większość rzeczy, które kompresuję, to tylko kod, więc muszę użyć kompresji bez strat. Zastanawiałem się, czy jest coś, co oferuje lepszą redukcję rozmiaru niż 7zip. Nie ma znaczenia, ile czasu zajmuje kompresja lub dekompresja, rozmiar jest najważniejszy. Czy ktoś wie o takim oprogramowaniu w systemie Linux? A może 7zip jest najlepszy?

Odpowiedzi:


37

7zipjest bardziej kompaktorem (jak PKZIP) niż sprężarką. Jest dostępny dla Linuksa, ale może tworzyć skompresowane archiwa tylko w zwykłych plikach, na przykład nie jest w stanie skompresować strumienia. Nie jest w stanie przechowywać większości atrybutów plików Uniksa, takich jak własność, listy ACL, atrybuty rozszerzone, twarde linki ...

W systemie Linux jako kompresor używasz xztego samego algorytmu kompresji, co 7zip(LZMA2). Możesz go użyć do kompresji archiwów tar.

Podobnie jak w przypadku gzipi bzip2nie jest równoległa wariant pixz, który może wykorzystać kilka procesorów przyspieszyć kompresję ( xzmożna też zrobić to natywnie od wersji 5.2.0 z -Topcją). pixzWariant również obsługuje indeksowanie skompresowanego tararchiwum, co oznacza, że jest w stanie wyodrębnić pojedynczy plik bez konieczności dekompresji pliku od początku.


6
Czy potrafisz rozwinąć rozróżnienie między „kompaktorem” a „sprężarką”, którą tutaj tworzysz?
mattdm,

2
@mattdm, tylko kompresor kompresuje, kompaktor kompaktuje kilka rzeczy w skompresowane archiwum.
Stéphane Chazelas,

2
@mattdm, dziwne. To była bardzo powszechna terminologia i rozróżnienie w latach 90., wygląda na to z wyszukiwarki Google, to już nie jest przypadek.
Stéphane Chazelas,

6
Może to była sprawa DOS? W Uniksie rozróżnia się kompresję od archiwizacji (jak również mówisz), ale nigdy nie słyszałem „kompaktora”.
mattdm,

1
@mattdm, cóż, kompakt jest archiwizacją + kompresją (być może z indeksowaniem, być może elementy skompresowane osobno), archiwizacja nie oznacza kompresji. To nie jest sprawa DOS, ale być może była to sprawa francuska. Przechodząc do archiwów usenet, wydaje mi się, że natrafiam tylko na moje artykuły, więc mógł to być mój wynalazek, choć mocno wierzę, że tak nie jest.
Stéphane Chazelas,

65

lrzip jest tym, czego naprawdę szukasz, zwłaszcza jeśli kompresujesz kod źródłowy!

Cytując plik README:

Jest to program do kompresji zoptymalizowany dla dużych plików. Im większy plik i więcej pamięci, tym większa przewaga kompresji, zwłaszcza gdy pliki są większe niż 100 MB. Zaletą może być albo rozmiar (znacznie mniejszy niż bzip2), albo prędkość (znacznie szybsza niż bzip2). [...] Unikalną cechą lrzip jest to, że przez cały czas stara się maksymalnie wykorzystać dostępnego pamięci RAM w twoim systemie, aby uzyskać maksymalne korzyści.

lrzip najpierw skanuje i usuwa wszelką nadmiarowość danych na duże odległości za pomocą algorytmu opartego na rzipie, a następnie kompresuje dane nie nadmiarowe.

Con Kolivas stanowi fantastyczny przykład na liście mailingowej jądra Linux ; gdzie kompresuje 10,3 GB tarballa z czterdziestoma wersjami jądra Linuksa do 163,9 MB (1,6%) i robi to szybciej niż xz. Nie używał nawet najbardziej agresywnego algorytmu drugiego przejścia!

Jestem pewien, że uzyskasz świetne wyniki kompresowania ogromnych archiwów kodu źródłowego :)

sudo apt-get install lrzip

Przykład (użycie domyślnych opcji dla innych):

Ultra kompresja, pies wolny:

lrzip -z file

Folderów, wystarczy zmienić lrzipnalrztar


1
Mogę również zakwestionować, lrzipże świetnie sprawdza się również w przypadku kopii zapasowych tar/cpio/paxdrzew plików systemowych, ponieważ zwykle zawierają one wiele nadmiarowości dalekiego zasięgu, co lrzipjest naprawdę dobre w kompresji.
Franki

10
Próbowałem lrzipi pixzna 19 GB plik tekstowy. Obie zajęły około pół godziny na skompresowanie go (na maszynie sześciordzeniowej), ale lrzplik był o połowę mniejszy niż xzplik (2,7 vs. 4,4 GB). Zamiast tego kolejny głos na tę odpowiedź.
fnl

3
@Franki przez „konkurs”, masz na myśli „zaświadczenie”?
mitchus

Czuje się jak Pied Piper!
Denys Vitali,

1
Czy wiesz, jaka byłaby różnica między lrzip a rzip? rzip wygląda na to, że został wydany w 1998 roku, aby najlepiej radzić sobie na bardzo dużych plikach z redundancją na duże odległości, więc brzmi podobnie do lrzip - zastanawiasz się tylko, czy lrzip pochodzi z rzipa? (rzip z rzip.samba.org )
Astara

6

Jeśli szukasz największej redukcji rozmiaru niezależnie od prędkości kompresji, LZMAprawdopodobnie najlepsza opcja.

Porównując różne kompresje, ogólnie kompromis jest zależny od czasu i wielkości. gzipma tendencję do kompresji i dekompresji stosunkowo szybko, jednocześnie zapewniając dobry współczynnik kompresji. bzip2jest nieco wolniejszy niż gzipczas kompresji i dekompresji, ale daje jeszcze większe współczynniki kompresji. LZMAma najdłuższy czas kompresji, ale daje najlepsze współczynniki, a jednocześnie ma współczynnik dekompresji przewyższający współczynnik bzip2.

Źródła: 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
Muszę się z tym nie zgodzić! Kompresor plików bezstratny zapewniając najwyższy współczynnik redukcji niezależnie od prędkości kompresji, który działa na GNU / Linux jest prawdopodobnie albo zpaqalbo paq8l. Są jednak tak powolne, że są mało praktyczne w przypadku większości zastosowań w świecie rzeczywistym.
Franki

@Franki spoko sudo apt-get install zpaq, zrobiłem kilka testów, według wiki , ta aplikacja będzie najnowsza w 2009 roku, ale wciąż traci na kgb (który używa PAQ6), ale kgb jest DUŻO wolniejszy ...
Aquarius Power

@Franki, właśnie odkryłem, że zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tarkompresuje więcej niżkgb -9
Wodnik Moc

4

(zaktualizowana odpowiedź) Jeśli czas nie ma znaczenia, użyj ZPAQ v1.10 (lub nowszego) np .:
zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar (maksymalna lokalizacja pliku ccg może się różnić, sprawdź listę zainstalowanych pakietów)

zpaqfaktycznie skompresowany bardziej niż kgb -9 newFileName.kgb yourFileName.tar.
Jest to oparte na starszym algorytmie PAQ6 i jest bardzo wolne ...
Testowałem ze wszystkimi innymi kompresorami, takimi jak 7zip, lrzip, bzip2, kgb .. i zpaq najbardziej skompresowany!

Jeśli kgbnadal Cię interesuje: (ponieważ był to mój pierwszy wybór w tej odpowiedzi, więc zachowuję informacje tutaj)
Ubuntu 14.04 ma kgb 1.0b4 , uruchom, sudo apt-get install kgbaby go zainstalować.

Poniżej znajduje się wersja Windows, którą możesz spróbować uruchomić / skompilować kgbna Linuksie, ale mi się nie udało.
Wersja 2 beta2 jest dostępna na SourceForge , ale nie są dostępne binaria dla Linuksa. Możesz spróbować uruchomić go w konsoli wine kgb2_console.exe -a7 -m9(metoda -a6 -m9wydaje się odpowiadać najlepszej metodzie w wersji 1.0b4, -a7jest nowa w wersji 2 beta2). Chociaż miałem lepszą stabilność, instalując .NET 2.0 z Winetricks i działając wine "KGB Archiver 2 .net.exe"(nie lubię tego robić, więc pozostanę przy natywnym Linuksie 1.0b4, który ma prawie taki sam wynik jak 2 beta2).
W każdym razie wersja 2 beta2 naprawdę zasługuje na natywną wersję Linuksa! Być może coś można osiągnąć za pomocą MinGW, zobacz to , ale to polecenie nadal nie działa poprawnie:i586-mingw32msvc-g++ kgb2_console.cpp -o kgb. Czy można spróbować go skompilować za pomocą dmcs(Mono)? zobacz tę wskazówkę .


2

7zip nie jest unikalną technologią, ale obsługuje kilka różnych metod kompresji (patrz wikipedia 7z na ten temat).

Zestaw testów przeprowadzono z różnymi narzędziami specjalnie dla plików źródłowych C. Nie jestem pewien, które z narzędzi istnieją dla Linuksa, jeśli nadal istnieją. Można jednak zauważyć, że najlepszym algorytmem był PPM z modyfikacjami (PPMII, a następnie PPMZ).

Jeśli interesują Cię narzędzia, możesz przeglądać stronę, jest ona w języku rosyjskim, ale może pomóc tłumaczenie Google. Jest duży depozyt plików binarnych , których możesz użyć (lub nie będziesz mógł) z Linuksa z winem, jeśli naprawdę jest to potrzebne.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.