Który algorytm kompresji zapewnia między xz, gzip i bzip2 najmniejszy rozmiar pliku i największą prędkość podczas kompresji dość dużych plików tar?
Który algorytm kompresji zapewnia między xz, gzip i bzip2 najmniejszy rozmiar pliku i największą prędkość podczas kompresji dość dużych plików tar?
Odpowiedzi:
W teście warunków skrajnych skompresowałem 464 megabajty danych przy użyciu trzech wymienionych formatów. Gzip zwrócił plik 364 MB. Bzip2 zwrócił plik 315 MB. Xz zwrócił plik 254 MB. Zrobiłem również prosty test prędkości:
Kompresja:
1: Gzip
2: Xz
3: Bzip2 (w tym czasie mój wentylator dmuchał dość mocno, co wskazuje, że mój Athlon II był dość napięty)
Dekompresja:
1: Xz
2: Gzip
3: Bzip2
Należy pamiętać, że wszystkie te testy zostały wykonane z najnowszą wersją 7-Zip.
Xz jest najlepszym formatem dla dobrze zaokrąglonej kompresji, a Gzip jest bardzo dobry dla szybkości. Bzip2 jest przyzwoity ze względu na swój współczynnik kompresji, chociaż prawdopodobnie zamiast niego należy użyć xz.
bzip2 -9 <file>
?
Zrobiłem własny test porównawczy na obrazie vmdk instalacji Linuksa w wersji 1.1GB:
rar =260MB comp= 85s decomp= 5s
7z(p7z)=269MB comp= 98s decomp=15s
tar.xz =288MB comp=400s decomp=30s
tar.bz2=382MB comp= 91s decomp=70s
tar.gz =421MB comp=181s decomp= 5s
wszystkie poziomy kompresji na maks., procesor Intel I7 3740QM, pamięć 32 GB 1600, źródło i miejsce docelowe na dysku RAM
Generalnie używam rar lub 7z do archiwizacji normalnych plików, takich jak dokumenty.
a do archiwizacji plików systemowych używam .tar.gz lub .tar.xz za pomocą rolki plików lub tar z opcjami -z lub -J wraz z --preserve, aby kompresować natywnie za pomocą tar i zachować uprawnienia (także alternatywnie .tar.7z lub można użyć .tar.rar)
aktualizacja: ponieważ tar zachowuje tylko zwykłe uprawnienia, a nie listy ACL, również można użyć zwykłego .7z oraz kopii zapasowych i przywracania uprawnień i list ACL ręcznie za pośrednictwem getfacl i sefacl, co wydaje się być najlepszą opcją zarówno do archiwizacji plików, jak i tworzenia kopii zapasowych plików systemowych, ponieważ będzie pełna zachować uprawnienia i listy ACL, ma sumę kontrolną, test integralności i możliwość szyfrowania, jedyną wadą jest to, że p7zip nie jest dostępny wszędzie
Myślę, że ten artykuł zapewnia bardzo interesujące wyniki.
http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
Najbardziej wydajnymi formatami są xz i lzma, oba z przekazanym parametrem -e.
Najszybszym algorytmem są zdecydowanie lzop i lz4, które mogą wytworzyć poziom kompresji niezbyt daleko od gzip w 1,3 sekundy, podczas gdy gzip zajął 8,1 sekundy. Współczynnik kompresji wynosi 2,8 dla lz4 i 3,7 dla gzip.
Oto kilka wyników, które wyodrębniłem z tego artykułu:
Gzip: 8,1 s przy 3,7
lz4: 1,3 s przy 2,8
xz: 32,2s przy 5,43
xz -e: 6m40 przy 7,063
Więc jeśli naprawdę desperacko potrzebujesz prędkości, lz4 jest niesamowity i nadal zapewnia współczynnik kompresji 2.8.
Jeśli desperacko potrzebujesz zaoszczędzić bajt, xz przy maksymalnym poziomie kompresji (9) wykonuje najlepszą robotę dla plików tekstowych takich jak źródło jądra. Jest jednak bardzo długi i zajmuje dużo pamięci.
Dobrym, gdy jest to potrzebne, aby zminimalizować wpływ na czas ORAZ przestrzeń, jest gzip. To jest to, którego użyłbym do ręcznego codziennego tworzenia kopii zapasowych środowiska produkcyjnego.