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

Innholdsfortegnelse:

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

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

Video: Hva er fordelen ved å bruke Tar-filformatet i dag?
Video: 30 Ultimate Windows 10 Tips and Tricks for 2020 - YouTube 2024, Mars
Anonim
 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?
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 leser MarcusJ er nysgjerrig på tarformatet og hvorfor bruker vi det fortsatt etter alle disse årene:

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?

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 levetidets levetid og funksjonalitet:

Part 1: Performance

Here is a comparison of two separate workflows and what they do.

You have a file on disk

blah.tar.gz

det vil si 1 GB gzip-komprimerte data som, når de er ukomprimert, opptar 2 GB (så et komprimeringsforhold på 50%).

Måten du ville opprette dette på, hvis du skulle arkivere og komprimere separat, ville være:

tar cf blah.tar files …

Dette ville resultere i

blah.tar

som bare er aggregering av

files …

i ukomprimert form.

Da ville du gjøre det

gzip blah.tar

Dette ville lese innholdet av

blah.tar

fra disk, komprimere dem gjennom gzip-komprimeringsalgoritmen, skriv innholdet til

blah.tar.gz

deretter fjern koblingen (slett) filen

blah.tar

Nå, la oss dekomprimere!

Vei 1

Du har

blah.tar.gz

på en eller annen måte.

Du bestemmer deg for å kjøre:

gunzip blah.tar.gz

Dette vil

  • LES 1GB komprimert data innhold av

    blah.tar.gz

  • PROSESS de komprimerte dataene gjennom

    gzip

    dekompressor i minnet.

  • Som minnesbufferen fyller opp med "en blokk" verdt data, SKRIVER de ukomprimerte dataene inn i filen

    blah.tar

    på disk og gjenta til alle komprimerte data 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 sannsynligviset par byte større enn summen av alle fildataene ville være.

Du løper:

tar xvf blah.tar

Dette vil

  • LES 2GB ukomprimert datainnhold av

    blah.tar

    og

    tar

    filformatets datastrukturer, inkludert informasjon om filtillatelser, filnavn, kataloger, etc.

  • SKRIV til å diskere 2 GB data og metadataene. 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.

Den totale data vi LESE fra disk i denne prosessen var 1GB (for gunzip) + 2GB (for tjære) = 3GB.

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

Vei 2

Du har

blah.tar.gz

på en eller annen måte.

Du bestemmer deg for å kjøre:

tar xvzf blah.tar.gz

Dette vil

  • LES 1GB komprimert data innhold av

    blah.tar.gz

    en blokk om gangen, til minne.

  • PROSESS de komprimerte dataene gjennom

    gzip

    dekompressor i minnet.

  • Når minnebufferen fylles opp, vil det rør disse dataene, i minnet, til og med

    tar

    filformat parser, som vil lese informasjon om metadata, etc. og de ukomprimerte fildataene.

  • Når minnebufferen fylles opp i

    tar

    fil parser, 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 LESE fra disk i denne prosessen var 1 GB komprimert data, periode.

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

Hvis du merker, hvor mye disk I / O i Vei 2 eridentisk til disken I / O utført av, si

Zip

eller

7-Zip

programmer, justering for eventuelle forskjeller i kompresjonsforhold.

Og hvis kompresjonsforholdet er din bekymring, bruk

Xz

kompressor for å innkapsles

tar

og du har LZMA2'ed TAR-arkiv, som er like effektiv som den mest avanserte algoritmen tilgjengelig for

7-Zip

:-)

Del 2: Funksjoner

tar

lagrer UNIX-tillatelser innenfor filmetadataene sine, og er meget kjent og testet for å kunne pakke opp en katalog med alle slags forskjellige tillatelser, symbolske koblinger etc. Det er flere enn noen få tilfeller der man kanskje trenger å spole en masse filer inn 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 fellesnevner" filformat: I likhet med de fleste Windows-brukere har tilgang til.zip eller.rar dekompressorer, de fleste Linux-installasjoner, selv de mest grunnleggende, vil ha tilgang til minst tjære og gunzip, uansett hvor gammel eller pared. 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 ligner på 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 online nedlastingsbutikker 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.

Anbefalt: