Egyre több tar
archívum tömörítéshez használja az LZMA2 alapú xz
formátumot a hagyományos bzip2(bz2)
tömörítés. Valójában a kernel.org késői “ Viszlát bzip2 ” bejelentést tett, 2013. december 27. , jelezve, hogy a kernelforrások ettől a ponttól mind a tar.gz, mind a tar.xz formátumban megjelennek – és a weboldal főoldalán kínált a tar.xz
fájlban található.
Van-e valamilyen konkrét ok arra, hogy miért történik ez, és mi a jelentősége a gzip
ebben az összefüggésben?
Válasz
Terjesztéshez archívumok az interneten keresztül, a következő dolgok általában prioritást élveznek:
- Tömörítési arány (azaz, hogy a kompresszor milyen kicsi adatokat készít);
- Dekompressziós idő (CPU követelmények) ;
- Dekompressziós memória követelményei; és
- Kompatibilitás (milyen kiterjedt a dekompressziós program)
Tömörítési memória & A CPU-követelmények nem” t nagyon fontos, mert ehhez nagy, gyors gépet használhat, és ezt csak egyszer kell megtennie.
A bzip2-hez képest az xz jobb tömörítési arányú és alacsonyabb (jobb) dekompressziós idővel rendelkezik. Ennek ellenére – a jellemzően használt tömörítési beállításoknál – több memória szükséges a [1] kicsomagolásához, és kissé kevésbé elterjedt. A Gzip kevesebb memóriát használ, mint bármelyik.
Tehát mind a gzip, mind az xz formátumú archívumokat közzéteszik, így kiválaszthatja:
- Dekompressziót kell végrehajtani egy olyan gépen, ahol nagyon korlátozott memória (< 32 MB): gzip. Adott, nem túl valószínű, ha a kernelforrásokról beszélünk.
- A rendelkezésre álló minimális eszközök dekompresszálásának szükségessége: gzip
- Szeretné megtakarítani a letöltési időt és / vagy a sávszélességet: xz
Nincs olyan tényezők reális kombinációja, amelyek ráveszik a bzip2 kiválasztására. Ezért fokozatosan megszűnik.
A tömörítési összehasonlításokat blogbejegyzésben néztem. Nem próbáltam megismételni az eredményeket, és gyanítom, hogy némelyik megváltozott (leginkább azt gondolom, hogy a xz
javult, mivel a legújabb.)
(Vannak olyan speciális esetek, amikor egy jó bzip2 megvalósítás előnyösebb lehet, mint az xz: a bzip2 jobban képes tömöríteni a sok nullával és genom DNS-szekvenciával rendelkező fájlt, mint az xz. Az xz újabb verzióiban már van (opcionális) blokk mód, amely lehetővé teszi az adatokat helyreállítás a korrupció, a párhuzamos tömörítés és [elméletileg] a dekompresszió után. Korábban csak a bzip2 kínálta ezeket. [2] Ezek azonban egyik sem relevánsak a kernelterjesztés szempontjából)
1: Archív méretben a xz -3
bzip -9
körül van. Ezután az xz kevesebb memóriát használ a kicsomagoláshoz. De (például, például a Linux kernel-tárfájlokhoz használt) sokkal többet használ, mint a bzip -9
. (És még xz -0
több kell, mint gzip -9
).
2: F21 Rendszer széles változás: lbzip2 alapértelmezett bzip2 megvalósításként
Megjegyzések
- Bármely megjegyzés a témához hibatűrés vagy valami olyan, amelyet ‘ mindig a tömörítési algoritmusokon kívül valósított meg?
- @illumin É rugalmasság ‘ nem biztosítható a tömörítési arány feláldozása nélkül. ‘ ortogonális probléma, és bár léteznek olyan eszközök, mint a Parchive, a rendszermag TCP terjesztésére a terjesztéshez ‘ s a hibakezelés ugyanúgy elvégzi a munkát jól.
- @illumin É A hibatűrés (feltételezve, hogy a par2-hez hasonlóra gondolsz) általában nem ‘ az archívumok interneten keresztüli terjesztésével kapcsolatos aggodalom. A letöltéseket feltételezzük, hogy elég megbízhatóak (és csak akkor töltheti le újra, ha sérült volt). Gyakran használnak kriptográfiai kivonatokat és aláírásokat, amelyek észlelik a korrupciót és a manipulációt is. Vannak olyan kompresszorok, amelyek nagyobb hibatűrést biztosítanak, bár a tömörítési arány árán. Úgy tűnik, senki sem találja meg a kompromisszumot a HTTP vagy FTP letöltéseknél.
- Az xz LESS memóriát használ a kicsomagoláshoz.
- @Mike Megváltozott azóta, hogy ezt írtam? Különösen az első lábjegyzet magyarázza a memóriahasználatot.
Válasz
Először is, ez a kérdés nem kapcsolódik közvetlenül hogy tar
. Tar csak egy tömörítetlen archívumot hoz létre, majd a tömörítést később alkalmazzák.
A Gzip az LZMA2-hez és a bzip2-hez képest viszonylag gyors. Ha a sebesség számít, gzip
(különösen a többszálú megvalósítás pigz
) gyakran jó kompromisszum a tömörítési sebesség és a tömörítési arány között. Bár vannak alternatívák, ha a sebesség kérdés (pl. LZ4).
Ha azonban magas tömörítési arányra van szükség, az LZMA2 szinte minden szempontból legyőz bzip2
. A tömörítési sebesség gyakran lassabb, de sokkal gyorsabban dekompresszálódik, és sokkal jobb tömörítési arányt biztosít a magasabb memóriahasználat árán.
Nincs sok ok a bzip2
többé, kivéve a visszafelé kompatibilitást. Ezenkívül az LZMA2-et a többszálas szálak szem előtt tartásával tervezték meg, és alapértelmezés szerint sok megvalósítás többmagos CPU-kat használ (sajnos a Linuxon xz
ezt még nem teszi meg). Ennek van értelme, mivel az órajelek nem fognak tovább növekedni, de a magok száma megnő.
Többszálas bzip2
megvalósítások vannak (pl. pbzip
), de gyakran alapértelmezés szerint nincsenek telepítve. Vegye figyelembe azt is, hogy a többszálú bzip2
Csak akkor térül meg igazán, amikor tömörít en, míg a dekompresszió egyetlen szálat használ, ha a fájlt egyetlen szálon bzip2
tömörítették, ellentétben az LZMA2-vel. = “7582bb06c1”>
változatok csak akkor használhatják a többmagos CPU-kat, ha a fájlt párhuzamosbzip2
verzióval tömörítették, ami gyakran nem így van.
Megjegyzések
Válasz
Az LZMA2 blokktömörítő rendszer, míg a gzip nem az. Ez azt jelenti, hogy az LZMA2 többszálas menettel rendelkezik. Továbbá, ha egy archívumban korrupció történik, akkor az LZMA2-vel általában visszaállíthatja az adatokat a következő blokkokból, de ezt nem tudja megtenni a gzip segítségével. A gyakorlatban az egész archívumot elveszíti a sérült blokkot követő gzip-el. Az LZMA2 archívummal csak a sérült blokk (ok) által érintett fájl (oka) t veszítheti el. Ez fontos lehet a nagyobb, több fájlt tartalmazó archívumokban.
Megjegyzések
- Ez valóban nagyon hasznos és fontos megkülönböztetés!
- Támogathatja ezeket az állításokat forrásokkal? Még nem láttam egy XZ helyreállító eszközt, és ismert forrásom másként állítja: nongnu.org/lzip/xz_inadequate.html
Válasz
Rövid válasz : Az xz a tömörítési arány szempontjából hatékonyabb. Tehát lemezterületet takarít meg és optimalizálja a hálózaton keresztüli átvitelt.
Láthatja ezt a gyors benchmarkot , hogy gyakorlati tesztekkel fedezze fel a különbséget.
Megjegyzések
- A link megszakadt.
- Új link: catchchallenger.first -world.info/wiki/…
z
opciót.pixz
telepítésre. Néhány platformon axz
szálak már támogatottak. Míg abzip2
valószínűtlen, hogy valaha is többszálas lesz, mivel a formátumot nem ‘ t tervezték többszálas szálak szem előtt tartásával. Ezenkívül apbzip2
csak akkor gyorsítja a dekompressziót, ha a fájltpbzip2
segítségével tömörítették, ami gyakran nem így van.This makes sense since the clock speeds won't increase any more
– mi? hogy ‘ nem egészen igaz. a bejegyzés 2014-ben készült, amikor az Intel kiadta az i3-4370-et 3,8 GHz-en. 2017-ben az Intel kiadta ai7-8700K
-et 4,7 GHz-en. 2018-ban kiadták az i9-9900K-ot 5 GHz-en – és valószínűleg ‘ s valószínűleg 2015-ben cpus & 2016 ‘ hiányzik ebből a listából is