Tar arkistointimuoto on vuosien mittaan todellinen Methuselah, mutta se on edelleen raskaassa käytössä. Mikä tekee tar-muodon niin hyödyllisestä pitkän alun jälkeen?
Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.
SuperUser-lukija MarcusJ on utelias tar-formaatista ja miksi käytämme sitä vielä kaikkien näiden vuosien jälkeen:
Tiedän, että tar on tehty kasettiarkistoista takaisin päivälle, mutta tänään meillä on arkistoida tiedostomuotoja, jotka yhdistävät tiedostoja ja suorittavat pakkauksen samassa loogisessa tiedostomuodossa.
kysymykset:
- Onko tehokas rangaistus aggregointi- / puristus- / dekompressiovaiheessa gzipin tai bzip2: n kapseloidun tar: n käyttämiseksi verrattuna sellaiseen tiedostomuotoon, joka yhdistää ja puristaa samassa tietorakenteessa? Oletetaan, että kompressorin vertailuaika on identtinen (esim. Gzip ja Deflate ovat samanlaisia).
- Onko tar-tiedostomuodossa sellaisia ominaisuuksia, joita muut tiedostomuodot, kuten .7z ja .zip eivät ole?
- Koska tar on niin vanha tiedostomuoto, ja nykyisemmät tiedostomuodot ovat olemassa, miksi tar (joko kapseloidaan gzip, bzip2 tai jopa uusi xz) vielä niin laajalti käytössä tällä hetkellä GNU / Linux, Android, BSD ja muut tällaiset UNIX käyttöjärjestelmiä, tiedostojen siirtoa, ohjelmalähdettä ja binaaritiedostoja varten, ja joskus jopa paketinhallintaformaatiksi?
Se on täysin kohtuullinen kysymys; niin paljon on muuttunut tietojenkäsittelymaailmassa viimeisten kolmenkymmenen vuoden aikana, mutta käytämme edelleen tar-muotoa. Mikä on tarina?
SuperUser-avustaja Allquixotic tarjoaa jonkinlaista tietoa tar-formaatin pitkäikäisyydestä ja toimivuudesta:
Osa 1: Suorituskyky
Tässä on vertailu kahden erillisen työnkulun ja niiden tekemiseen.
Sinulla on tiedosto levylle
blah.tar.gz
joka on esimerkiksi 1 gigatavua gzip-pakattua dataa, joka pakkaamattomana vaatii 2 gigatavua (joten pakkaussuhde on 50%).Näin voit luoda tämän, jos haluat tehdä arkistoinnin ja pakkaamisen erikseen, olisi:
tar cf blah.tar tiedostot ...
Tämä johtaisi siihen
blah.tar
joka on pelkkä aggregointitiedostot…
kompressoimattomassa muodossa.Sitten tekisit
gzip blah.tar
Tämä lukisi sisällön
blah.tar
levyltä, pakkaa ne gzip-puristusalgoritmilla, kirjoita sisältöblah.tar.gz
, purkaa sitten tiedosto (poistetaan)blah.tar
.Pura nyt dekompressi!
Tapa 1
Sinulla on
blah.tar.gz
, tavalla tai toisella.Päätit käyttää:
gunzip blah.tar.gz
Tämä tulee
- LUE 1 Gt: n pakattujen tietojen sisältö
blah.tar.gz
.- PROCESS pakattuja tietoja
gzip
decompressor muistissa.- Kun muistipuskuri täyttää "data" -arvon, kirjoita pakkaamattomat tiedot tiedostoon
blah.tar
levylle ja toista, kunnes kaikki pakatut tiedot luetaan.- Poista yhteys (poistetaan) tiedosto
blah.tar.gz
.Nyt sinulla on
blah.tar
levylle, joka on pakkaamaton mutta sisältää yhden tai useamman sen sisältämät tiedostot, joiden tietojen rakenne on liian alhainen. Tiedostokoko on luultavastipari tavua suurempi kuin kaikkien tiedostotietojen summa.Sinä juokset:
tar xvf blah.tar
Tämä tulee
- LUE 2 Gt: n pakkaamatonta datasisältöä
blah.tar
jaterva
tiedostomuodon tietorakenteet, mukaan lukien tiedot tiedostojen käyttöoikeuksista, tiedostonimistä, hakemistoista jne.- Kirjoita levylle 2 Gt: n data ja metatiedot. Tämä tarkoittaa: tietojen rakenteen / metatietojen kääntämistä uusien tiedostojen ja hakemistojen luomiseen levylle sopivaksi tai uudelleenkirjoittamalla olemassa olevia tiedostoja ja hakemistoja uusilla tietosisällöillä.
Kokonaistiedot meLUKEA levystä tässä prosessissa oli 1 Gt (gunzip) + 2 Gt (tar) = 3 Gt.
Kokonaistiedot meKIRJOITTI levylle tässä prosessissa oli 2 gigatavua (gunzipille) + 2 gigatavua (tar) + muu tavu metatiedolle = noin 4 gigatavua.
Way 2
Sinulla on
blah.tar.gz
, tavalla tai toisella.Päätit käyttää:
tar xvzf blah.tar.gz
Tämä tulee
- LUE 1 Gt: n pakattujen tietojen sisältö
blah.tar.gz
, lohko kerrallaan, muistiin.- PROCESS pakattuja tietoja
gzip
decompressor muistissa.- Kun muistipuskuri täyttyy, se tuleeputki että tiedot, muistiin, läpi
terva
tiedostomuotoesittelijä, joka lukee tietoja metatiedoista jne. ja kompressoimattomista tiedostatiedoista.- Kun muistipuskuri täyttyy
terva
tiedoston jäsentimen, se kirjoittaa kompressoimatonta dataa levylle luomalla tiedostoja ja hakemistoja ja täyttämällä ne pakkaamattomilla sisällöillä.Kokonaistiedot meLUKEA levyltä tässä prosessissa oli 1 Gt pakattua dataa, ajanjaksoa.
Kokonaistiedot meKIRJOITTI levylle tässä prosessissa oli 2 Gt pakkaamatonta dataa + muutamia tavuja metatietoihin = noin 2 Gt.
Jos huomaat, I / O-levyn määräWay 2 onidenttinen levyn I / O: lle, jota sanotaan, esimerkiksi
Postinumero
tai7-Zip
ohjelmat, säätää mahdollisia kompressiosuhteita.Ja jos pakkaussuhde on sinun huolesi, käytä
xz
kompressori kapseloidaterva
, ja sinulla on LZMA2'n TAR-arkisto, joka on yhtä tehokas kuin edistynein algoritmi7-Zip
:-)Osa 2: Ominaisuudet
terva
tallentaa UNIX-käyttöoikeudet tiedoston metatietoihinsa, ja se tunnetaan hyvin ja testataan menestyksekkäästi pakattamalla hakemistoon kaikenlaisia erilaisia käyttöoikeuksia, symbolisia linkkejä jne.On enemmän kuin muutamia tapauksia, joissa joudutaan lisäämään joukko tiedostoja yhdeksi tiedostoksi tai virralle, mutta ei välttämättä pakkaa sitä (vaikka pakkaus on hyödyllinen ja usein käytetty).Osa 3: Yhteensopivuus
Monet työkalut jakautuvat lähdekoodeissa tai binäärimuodossa .tar.gz tai .tar.bz2, koska se on "pienin yhteinen nimittäjä" -tiedostomuoto: aivan kuten useimmilla Windows-käyttäjillä on pääsy .zip- tai .rar-purkuohjelmiin, useimmat Linux-asennukset, jopa kaikkein yksinkertaisimpia, pääsevät ainakin tar ja gunzip, ei väliä kuinka vanha tai pared alas. Jopa Android-laitteilla on pääsy näihin työkaluihin.
Uusia projekteja, jotka kohdistuvat nykyaikaisia jakeluohjelmia käyttäviin yleisöihin, voivat jakautua hyvin nykyaikaisemmassa muodossa, kuten .tar.xz (käyttäen Xz (LZMA) -kompressiomuotoa, joka pakkaa paremmin kuin gzip tai bzip2) tai .7z, joka on samanlainen kuin Zip- tai Rar-tiedostomuotoja, koska se sekä pakkaa että määrittää asettelun useiden tiedostojen kapseloimiseksi yhteen tiedostoon.
Et näe .7z: n käyttämiä useammin samasta syystä, että musiikkia ei myydä online-lataamissa myymälöissä uusissa muodoissa, kuten Opusissa tai videossa WebM: ssä. Yhteensopivuus vanhojen tai hyvin perustuvien järjestelmien kanssa.
Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.