21Aug

Hva er fordelen ved å bruke Tar-filformatet i dag?

click fraud protection


Tar arkiveringsformatet er, i beregningsår, et veritabelt Metuselah, men det er fortsatt i stor grad i bruk i dag. Hva gjør tjæreformatet så nyttig lenge etter oppstarten?

Dagens Spørsmål &Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.

Spørsmålet

SuperUser-leseren MarcusJ er nysgjerrig på tarformatet og hvorfor bruker vi det fortsatt etter alle disse årene:

Jeg vet at tjære ble laget for båndarkiver tilbake på dagen, men i dag har vi arkivfilformater som beggesamle filer og utføre komprimering innenfor samme logiske filformat.

Spørsmål:

  • Er det en ytelsesstraff under aggregering av /compression/ dekompresjonsfaser for bruk av tjære innkapslet i gzip eller bzip2, sammenlignet med å bruke et filformat som gjør aggregering og komprimering i samme datastruktur? Anta at kjøretiden til kompressoren som sammenlignes, er identisk( for eksempel gzip og deflat er like).
  • Er det funksjoner i tarfilformatet som andre filformater, for eksempel. 7z og. zip, ikke har?
  • instagram viewer
  • Siden tjære er et gammelt filformat og nyere filformater eksisterer i dag, hvorfor er tjære( enten innkapslet i gzip, bzip2 eller til og med den nye xz) som fortsatt er så mye brukt i dag på GNU / Linux, Android, BSD og andre slikeUNIX-operativsystemer, for filoverføringer, programkilde og binære nedlastinger, og noen ganger til og med som et pakkehåndteringsformat?

Det er et helt fornuftig spørsmål;så mye har endret seg i databehandlingsverdenen de siste tretti årene, men vi bruker fortsatt tarformatet. Hva er historien?

Svaret

SuperUser-bidragsyter Allquixotic gir litt innsikt i tjæreformatets levetid og funksjonalitet:

Del 1: Ytelse

Her er en sammenligning av to separate arbeidsflyt og hva de gjør.

Du har en fil på disk blah.tar.gz som er 1 GB gzip-komprimert data, som når den er ukomprimert, opptar 2 GB( slik at et komprimeringsforhold på 50%).

Måten du ville lage dette på, hvis du skulle lage arkivering og komprimering separat, ville være:

tar cf blah.tar filer. ..

Dette ville resultere i blah.tar, som bare er aggregering av filene. .. i ukomprimert form.

Da ville du gjøre

gzip blah.tar

Dette ville lese innholdet av blah.tar fra disken, komprimere dem gjennom gzip-komprimeringsalgoritmen, skrive innholdet til blah.tar.gz, og fjern koblingen( slett) filen blah.tjære.

Nå, la oss dekomprimere!

Way 1

Du har blah.tar.gz, en eller annen måte.

Du bestemmer deg for å kjøre:

gunzip blah.tar.gz

Dette vil

  • lese 1GB komprimert data innholdet av blah.tar.gz.
  • PROCESS de komprimerte dataene gjennom gzip-dekompressoren i minnet.
  • Siden minnesbufferen fyller opp med en "blokk" som er verdt data, SKRIV de ukomprimerte dataene inn i fileblah.tar på disken og gjenta til alle de komprimerte dataene er lest.
  • Fjern koblingen( slett) filen blah.tar.gz.

Nå har du blah.tar på disk, som er ukomprimert, men inneholder en eller flere filer i den, med svært lav datastruktur overhead. Filstørrelsen er sannsynligvis et par bytes større enn summen av alle fildataene ville være.

Du kjører:

tar xvf blah.tar

Dette vil

  • LES 2GB ukomprimert datainnhold i blah.tar og tarfilformatets datastrukturer, inkludert informasjon om filtillatelser, filnavn, kataloger, etc.
  • SKRIV til disk2 GB data pluss metadata. Dette innebærer: å oversette data struktur / metadata informasjon til å lage nye filer og kataloger på disk etter behov, eller omskrive eksisterende filer og kataloger med nytt datainnhold.

De totale dataene vi LES fra disk i denne prosessen var 1GB( for gunzip) + 2GB( for tjære) = 3GB.

Den totale data vi WROTE til disk i denne prosessen var 2GB( for gunzip) + 2GB( for tjære) + noen byte for metadata = ca 4GB.

Way 2

Du har blah.tar.gz, en eller annen måte.

Du bestemmer deg for å kjøre:

tar xvzf blah.tar.gz

Dette vil

  • LES 1GB komprimert datainnhold av blah.tar.gz, en blokk om gangen, til minnet.
  • PROCESS de komprimerte dataene gjennom gzip-dekompressoren i minnet.
  • Når minnesbufferen fylles opp, vil den rør disse dataene, i minnet, til tar-filformatparseren, som vil lese informasjon om metadata etc. og de ukomprimerte fildataene.
  • Når minnesbufferen fylles i tarfilsparseren, vil den SKRIVE de ukomprimerte dataene til disk, ved å lage filer og kataloger og fylle dem opp med det ukomprimerte innholdet.

Den totale data vi LES fra disk i denne prosessen var 1 GB komprimert data, periode.

De totale dataene vi WROTE til disk i denne prosessen var 2 GB ukomprimert data + noen byte for metadata = ca. 2 GB.

Hvis du merker, er mengden av disk I / O i Way 2 identisk til disken I / O utført ved å si Zip or7-Zip-programmer, justering for eventuelle forskjeller i kompresjonsforhold.

Og hvis kompresjonsforholdet er din bekymring, bruk Xz-kompressoren til å inkapslere tjære, og du har LZMA2'ed TAR-arkiv, som er like effektiv som den mest avanserte algoritmen tilgjengelig for 7-Zip: -)

Del 2: Funksjoner

tar tar UNIX-tillatelser i sin filmetadata, og er veldig kjent og testet for å kunne pakke opp en katalog med alle slags forskjellige tillatelser, symbolske koblinger, etc. Det er mer enn noen få tilfeller der man kan trenge å glo en masse filerinn i en enkelt fil eller stream, men ikke nødvendigvis komprimere den( selv om komprimering er nyttig og ofte brukt).

Del 3: Kompatibilitet

Mange verktøy distribueres i kilde eller binær form som. tar.gz eller. tar.bz2 fordi det er et "laveste fellesnævner" filformat: akkurat som de fleste Windows-brukere har tilgang til. zip eller. rardekompressorer, vil de fleste Linux-installasjoner, selv de mest grunnleggende, ha tilgang til minst tjære og gunzip, uansett hvor gammel eller paret. Selv Android-firmware har tilgang til disse verktøyene.

Nye prosjekter som målretter publikum som kjører moderne distribusjoner, kan meget godt distribueres i et mer moderne format, for eksempel. tar.xz( ved hjelp av komprimeringsformatet Xz( LZMA), som komprimerer bedre enn gzip eller bzip2), eller. 7z, som lignertil Zip eller Rar filformatene ved at det både komprimerer og spesifiserer en oppsett for innkapsling av flere filer til en enkelt fil.

Du ser ikke. 7z brukt oftere av samme grunn som musikk ikke selges fra nettbutikkbutikker i helt nye formater som Opus, eller video i WebM.Kompatibilitet med folk som kjører gamle eller svært grunnleggende systemer.

Har du noe å legge til forklaringen? Lyde av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.