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.
Kysymys
SuperUser-lukija MarcusJ on utelias tar-formaatista ja miksi käytämme sitä vielä kaikkien näiden vuosien jälkeen:
I know that tar was made for tape archives back in the day, but today we have archive file formats that both aggregate files and perform compression within the same logical file format.
Questions:
- Is there a performance penalty during the aggregation/compression/decompression stages for using tar encapsulated in gzip or bzip2, when compared to using a file format that does aggregation and compression in the same data structure? Assume the runtime of the compressor being compared is identical (e.g. gzip and Deflate are similar).
- Are there features of the tar file format that other file formats, such as.7z and.zip do not have?
- Since tar is such an old file format, and newer file formats exist today, why is tar (whether encapsulated in gzip, bzip2 or even the new xz) still so widely used today on GNU/Linux, Android, BSD, and other such UNIX operating systems, for file transfers, program source and binary downloads, and sometimes even as a package manager format?
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?
Vastaus
SuperUser-avustaja Allquixotic tarjoaa jonkinlaista tietoa tar-formaatin pitkäikäisyydestä ja toimivuudesta:
Part 1: Performance
Here is a comparison of two separate workflows and what they do.
You have a file on disk
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 files …
Tämä johtaisi siihen
blah.tar
joka on pelkkä aggregointi
files …
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
ja
tar
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 me LUKEA levystä tässä prosessissa oli 1 Gt (gunzip) + 2 Gt (tar) = 3 Gt.
Kokonaistiedot me KIRJOITTI 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 tulee putki että tiedot, muistiin, läpi
tar
tiedostomuotoesittelijä, joka lukee tietoja metatiedoista jne. ja kompressoimattomista tiedostatiedoista.
-
Kun muistipuskuri täyttyy
tar
tiedoston jäsentimen, se kirjoittaa kompressoimatonta dataa levylle luomalla tiedostoja ja hakemistoja ja täyttämällä ne pakkaamattomilla sisällöillä.
Kokonaistiedot me LUKEA levyltä tässä prosessissa oli 1 Gt pakattua dataa, ajanjaksoa.
Kokonaistiedot me KIRJOITTI 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
Zip
tai
7-Zip
ohjelmat, säätää mahdollisia kompressiosuhteita.
Ja jos pakkaussuhde on sinun huolesi, käytä
Xz
kompressori kapseloida
tar
ja sinulla on LZMA2'n TAR-arkisto, joka on yhtä tehokas kuin edistynein algoritmi
7-Zip
:-)
Osa 2: Ominaisuudet
tar
kaupat UNIX luvat sen tiedostometadatalle, ja on hyvin tunnettu ja testattu onnistuneesti pakkaamaan hakemiston kaikenlaisia erilaisia lupia, symbolisia linkkejä, jne on enemmän kuin muutamia tapauksia, joissa yksi ehkä loraus joukko tiedostoja yhden tiedoston tai virran, mutta ei välttämättä pakkaa sitä (vaikka pakkaus on hyödyllinen ja usein käytetty).
Osa 3: Yhteensopivuus
Monia työkaluja jaetaan lähde- tai binäärimuodossa.tar.gz tai.tar.bz2 koska se on”pienin yhteinen nimittäjä” tiedostomuoto: aivan kuten useimmat Windows-käyttäjät voivat käyttää Zip tai.rar purkuohjelmia, useimmat Linux -järjestelmissä 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.
Uusi hankekokonaisuuden yleisön käytössä moderni jakaumia voi hyvin levittää enemmän modernin muodon, kuten.tar.xz (käyttäen XZ (LZMA) pakkausmuoto, 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ä.