Yhä enemmän tar -arkistoja käytä pakkaamiseen LZMA2-pohjaista muotoa xz perinteisen bzip2(bz2) -pakkaus. Itse asiassa kernel.org teki myöhäisen ” Good-bye bzip2 -ilmoituksen 27. joulukuuta 2013 , mikä osoittaa, että ytimen lähteet vapautetaan tästä eteenpäin sekä tar.gz- että tar.xz-muodossa – ja -sivuston pääsivulla mitä suoraan tarjottu on kohdassa tar.xz.

Onko mitään erityisiä syitä siihen, miksi näin tapahtuu ja mikä on gzip tässä yhteydessä?

Vastaa

Jakamiseen arkistoidaan Internetin kautta, seuraavat asiat ovat yleensä etusijalla:

  1. Pakkaussuhde (eli kuinka pieni kompressori tekee datasta);
  2. Pakkauksen aika (suorittimen vaatimukset) ;
  3. Pakkausmuistivaatimukset; ja
  4. Yhteensopivuus (kuinka laajasti purkamisohjelma on)

Pakkausmuisti & Suoritinvaatimuksia ei ole erittäin tärkeä, koska voit käyttää siihen suurta nopeaa konetta, ja sinun on tehtävä se vain kerran.

Bzip2: een verrattuna xz: llä on parempi pakkaussuhde ja pienempi (parempi) purkuaika. Se – tyypillisesti käytetyissä pakkausasetuksissa – kuitenkin vaatii enemmän muistia purkamaan [1] -painiketta ja on hieman vähemmän levinnyt. Gzip käyttää vähemmän muistia kuin kumpikaan.

Joten sekä gzip- että xz-muotoiset arkistot lähetetään, jolloin voit valita:

  • Tarve purkaa tietokoneessa hyvin rajoitettu muisti (< 32 Mt): gzip. Annettu, ei kovin todennäköistä, kun puhutaan ytimen lähteistä.
  • Tarve purkaa käytettävissä olevat työkalut: gzip
  • Haluatko säästää latausaikaa ja / tai kaistanleveyttä: xz

Ei ole realistista yhdistelmää tekijöistä, jotka saavat sinut valitsemaan bzip2. Joten se poistetaan käytöstä.

Katsoin pakkausten vertailuja -blogitekstissä . En yritä kopioida tuloksia, ja epäilen, että osa niistä on muuttunut (enimmäkseen odotan xz on parantunut, koska se on uusin.)

(On joitain erityisiä skenaarioita, joissa hyvä bzip2-toteutus voi olla parempi kuin xz: bzip2 voi pakata tiedoston, jossa on paljon nollia ja genomin DNA-sekvenssejä, paremmin kuin xz. Uusimmissa xz-versioissa on nyt (valinnainen) estotila, joka sallii datan palautuminen korruptiopisteen ja rinnakkaisen pakkaamisen ja [teoriassa] purkamisen jälkeen. Aiemmin vain bzip2 tarjosi näitä. [2] Mikään näistä ei kuitenkaan ole merkityksellinen ytimen jakelun kannalta)

1: Arkiston koossa xz -3 on noin bzip -9. Sitten xz käyttää vähemmän muistia purkamiseen. Mutta xz -9 (kuten käytetään esimerkiksi Linux-ytimen paketeissa) käyttää paljon enemmän kuin bzip -9. (Ja jopa xz -0 tarvitsee enemmän kuin gzip -9).

2: F21 Järjestelmän laaja muutos: lbzip2 oletuksena bzip2-toteutus

Kommentit

  • Kaikki kommentit aiheesta vikasietoisuus vai onko se jotain, joka ’ on aina toteutettu täysin pakkausalgoritmien ulkopuolella?
  • @illumin É joustavuutta ei ’ voida tarjota ilman pakkaussuhteen uhraamista. Se ’ on ortogonaalinen ongelma, ja vaikka Parchive-kaltaisia työkaluja on olemassa, ytimen TCP: n jakamiseksi ’ -virheiden käsittely tekee työn aivan kuten hyvin.
  • @illumin É Vikasietoisuus (olettaen, että tarkoitat jotain par2: n kaltaista) ei ole ’ t normaalisti huoli arkistojen jakamisesta Internetissä. Latausten oletetaan olevan riittävän luotettavia (ja voit vain ladata uudelleen, jos se on vioittunut). Salaushajautuksia ja allekirjoituksia käytetään usein, ja ne havaitsevat korruptiota ja väärentämistä. On kompressoreita, jotka antavat suuremman vikasietoisuuden, vaikkakin puristussuhteen kustannuksella. Kukaan ei näytä löytävän kompromissia sen arvosta HTTP- tai FTP-latauksille.
  • xz käyttää LESS-muistia pakkauksen purkamiseen.
  • @Mike Onko se muuttunut kirjoittaessani tämän? Erityisesti alaviitteessä 1 selitetään muistin käyttö.

Vastaus

Ensinnäkin tämä kysymys ei liity suoraan kohtaan tar. Terva luo vain pakkaamattoman arkiston, pakkaus tehdään myöhemmin.

Gzipin tiedetään olevan suhteellisen nopea verrattuna LZMA2: een ja bzip2: een. Jos nopeudella on merkitystä, gzip (erityisesti monisäikeinen toteutus pigz ) on usein hyvä kompromissi puristusnopeuden ja pakkaussuhteen välillä. Vaikka on olemassa vaihtoehtoja, jos nopeus on ongelma (esim. LZ4).

Jos kuitenkin halutaan korkea pakkaussuhde, LZMA2 voittaa bzip2 melkein kaikilla osa-alueilla. Pakkausnopeus on usein hitaampi, mutta se purkaa paljon nopeammin ja tarjoaa paljon paremman pakkaussuhteen suuremman muistin käytön kustannuksella.

Ei ole paljon syytä käyttää bzip2 enää, paitsi taaksepäin yhteensopivuus. Lisäksi LZMA2 suunniteltiin monisäikeisyyttä ajatellen, ja monet toteutukset käyttävät oletuksena moniydinsuorittimia (valitettavasti xz ei vielä tee tätä Linuxissa). Tämä on järkevää, koska kellonopeudet eivät enää kasva, mutta ytimien määrä kasvaa.

On olemassa monisäikeisiä bzip2 -toteutuksia (esim. pbzip ), mutta niitä ei usein asenneta oletusarvoisesti. Huomaa myös, että monisäikeinen bzip2 maksaa todella, kun pakataan kun taas purkaminen käyttää yhtä ketjua, jos tiedosto pakattiin yhdellä langalla bzip2, toisin kuin LZMA2. = ”7582bb06c1”>

-vaihtoehdot voivat hyödyntää monisydämisiä suorittimia vain, jos tiedosto pakattiin käyttämällä rinnakkaistabzip2-versiota, mikä ei useinkaan ole asia.

Kommentit

  • No, jotkut tervat haaveilevat vaihtoehdon z.
  • ” nopeus ” tekee hämmentävän vastauksen, sinun tulee viitata pakkauksen tai purkamisen nopeuteen. Kumpikaan pixz, pbzi p2 tai pigz asennetaan oletusarvoisesti (tai terva käyttää ilman -I-lippua), mutta pixz ja pbzip2 nopeuttavat pakkaamista ja purkamista ja pigz on vain pakkausta varten.
  • @Tobu xz on oletusarvoisesti monisäikeinen, joten pixz -asennusta ei enää tarvita. Joillakin alustoilla xz ketjutusta tuetaan jo. bzip2 ei todennäköisesti tule koskaan olemaan monisäikeinen, koska muotoa ei ’ t suunniteltu monisäikeisyyttä ajatellen. Lisäksi pbzip2 nopeuttaa purkamista vain, jos tiedosto on pakattu käyttämällä pbzip2 -toimintoa, mikä ei useinkaan ole asia.
  • @Marco Uskon, että lbzip2 sallii tiedostojen purkamisen rinnakkain, vaikka ne pakattaisiin muulla kuin rinnakkaisella toteutuksella (esim. Stock bzip2). Siksi ’ siksi käytän lbzip2: ta pbzip2: n sijaan. (On ’ mahdollista, että tämä on kehittynyt kommenttisi jälkeen.)
  • This makes sense since the clock speeds won't increase any more – mitä? että ’ ei ole totta. viesti tehtiin vuonna 2014, kun Intel julkaisi i3-4370: n taajuudella 3,8 GHz. vuonna 2017 Intel julkaisi i7-8700K taajuudella 4,7 GHz. vuonna 2018 he julkaisivat i9-9900K: n taajuudella 5 GHz – ja siellä ’ luultavasti cpus vuonna 2015 & 2016 että ’ puuttuu myös tästä luettelosta

vastaus

LZMA2 on lohkojen pakkausjärjestelmä, kun taas gzip ei ole. Tämä tarkoittaa, että LZMA2 soveltuu monisäikeisyyteen. Jos arkistossa esiintyy vioittumista, voit yleensä palauttaa tietoja seuraavista lohkoista LZMA2: lla, mutta et voi tehdä tätä gzip: llä. Käytännössä menetät koko arkiston vioittuneen lohkon jälkeen gzipillä. LZMA2-arkistossa menetät vain ne tiedostot, joihin vioittuneet lohkot vaikuttavat. Tämä voi olla tärkeää suuremmissa arkistoissa, joissa on useita tiedostoja.

Kommentit

  • Tämä on todellakin erittäin hyödyllinen ja tärkeä ero!
  • Voitteko varmuuskopioida nämä väitteet lähteillä? Minun ei ole vielä nähnyt XZ-palautustyökalua, ja tunnettu lähteeni väittää toisin: nongnu.org/lzip/xz_inadequate.html

vastaus

Lyhyt vastaus : xz on tehokkaampi pakkaussuhteen suhteen. Joten se säästää levytilaa ja optimoi siirron verkon kautta.
Näet tämän pika-vertailuarvon saadaksesi eron selville käytännön kokeilla.

Kommentit

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *