21Aug

Hvad er fordelen ved at bruge Tar-filformatet i dag?

click fraud protection


Tar arkiveringsformat er i beregningsår en verificabel Methuselah, men det er stadig i stor udstrækning i dag. Hvad gør tjæreformatet så nyttigt langt efter dets start?

Dagens Spørgsmål &Svar session kommer til os høflighed af SuperUser-en underafdeling af Stack Exchange, en community-drevet gruppe af Q & A-websteder.

Spørgsmål

SuperUser læser MarcusJ er nysgerrig efter tjæreformatet, og hvorfor bruger vi stadig det hele tiden:

Jeg ved, at tjære blev lavet til båndarkiver tilbage på dagen, men i dag har vi arkivfilformater, der beggeaggregerede filer og udføre kompression inden for samme logiske filformat.

Spørgsmål:

  • Er der en ydeevne straf under aggregering /compression/ dekompressionstrin for at bruge tjære indkapslet i gzip eller bzip2, sammenlignet med at bruge et filformat, der gør aggregering og komprimering i samme datastruktur? Antag, at kompressorens løbetid er sammenlignet, er identisk( fx gzip og deflat er ens).
  • Er der funktioner i tjærefilformatet, at andre filformater, som. 7z og. zip ikke har?
  • instagram viewer
  • Da tjære er et gammelt filformat, og der findes nyere filformater i dag, hvorfor er tjære( uanset om den er indkapslet i gzip, bzip2 eller endda den nye xz), der stadig er meget udbredt i dag på GNU / Linux, Android, BSD og andre sådanneUNIX-operativsystemer, til filoverførsler, programkilder og binære downloads, og nogle gange endda som et pakkehåndteringsformat?

Det er et helt fornuftigt spørgsmål;så meget har ændret sig i computeren verden i de sidste tredive år, men vi bruger stadig tjæreformatet. Hvad er historien?

Svaret

SuperUser-bidragsyderen Allquixotic giver noget indblik i tjæreformatets levetid og funktionalitet:

Del 1: Ydelse

Her er en sammenligning af to separate arbejdsgange og hvad de gør.

Du har en fil på disken blah.tar.gz, som er 1 GB gzip-komprimerede data, der, når den er ukomprimeret, optager 2 GB( så et kompressionsforhold på 50%).

Den måde, du ville oprette dette på, hvis du skulle arkivere og komprimere separat, ville være:

tjære cf blah.tar filer. ..

Dette ville resultere i blah.tar, som blot er aggregering af filerne. .. i ukomprimeret form.

Så ville du gøre

gzip blah.tar

Dette ville læse indholdet af blah.tar fra disken, komprimere dem gennem gzip komprimeringsalgoritmen, skrive indholdet til blah.tar.gz, så fjern forbindelsen( slet) filen blah.tjære.

Lad os nu dekomprimere!

Way 1

Du har blah.tar.gz, en eller anden måde.

Du beslutter at køre:

gunzip blah.tar.gz

Dette vil

  • LÆS 1GB komprimerede data indhold af blah.tar.gz.
  • PROCESS de komprimerede data gennem gzip-decompressoren i hukommelsen.
  • Da hukommelsesbufferen fylder op med "en blok", der er værd at data, SKRIV de ukomprimerede data ind i fileblah.tar på disken, og gentag indtil alle de komprimerede data er læst.
  • Aflink( slet) filen blah.tar.gz.

Nu har du blah.tar på disken, som er ukomprimeret, men indeholder en eller flere filer i den med meget lave datastrukturomkostninger. Filstørrelsen er sandsynligvis et par bytes større end summen af ​​alle fildata ville være.

Du kører:

tjære xvf blah.tar

Dette vil

  • LÆS 2GB ukomprimeret dataindhold i blah.tar og tarfilformatets datastrukturer, herunder oplysninger om filtilladelser, filnavne, mapper osv.
  • WRITE til disk2GB data plus metadata. Dette indebærer: oversættelse af datastruktur / metadatainformation til oprettelse af nye filer og mapper på disken efter behov, eller omskrivning af eksisterende filer og mapper med nyt dataindhold.

De samlede data vi LÆS fra disk i denne proces var 1GB( til gunzip) + 2GB( til tjære) = 3GB.

De samlede data vi WROTE til disk i denne proces var 2GB( til gunzip) + 2GB( til tjære) + et par bytes for metadata = ca. 4GB.

Way 2

Du har blah.tar.gz, en eller anden måde.

Du beslutter at køre:

tar xvzf blah.tar.gz

Dette vil

  • LÆS 1 GB komprimeret data indhold af blah.tar.gz, en blok ad gangen, til hukommelsen.
  • PROCESS de komprimerede data gennem gzip decompressoren i hukommelsen.
  • Da hukommelsesbufferen fyldes op, vil den rør disse data, i hukommelsen, til tar-filformatparseren, som vil læse informationen om metadata mv og de ukomprimerede fildata.
  • Da hukommelsesbufferen fyldes op i tjærefilsparseren, vil den SKRIVE de ukomprimerede data til disken ved at oprette filer og mapper og fylde dem med det ukomprimerede indhold.

De samlede data vi LÆS fra disk i denne proces var 1GB komprimeret data, periode.

De samlede data vi WROTE til disk i denne proces var 2 GB ukomprimeret data + nogle bytes for metadata = ca. 2 GB.

Hvis du bemærker, er mængden af ​​disk I / O i Way 2 identisk til disken I / O udført ved at sige Zip or7-Zip-programmerne og justerer for eventuelle forskelle i kompressionsforhold.

Og hvis kompressionsforholdet er din bekymring, brug Xz kompressoren til at indkapslere tjære, og du har LZMA2'ed TAR arkiv, som er lige så effektiv som den mest avancerede algoritme til rådighed for 7-Zip: -)

Del 2: Funktioner

tjære lagrer UNIX-tilladelser inden for dens filmetadata og er meget velkendt og testet for at kunne pakke en mappe med alle mulige forskellige tilladelser, symbolske links osv. Der er mere end et par tilfælde, hvor man måske skal bruge en masse filerind i en enkelt fil eller stream, men ikke nødvendigvis komprimere den( selvom komprimering er nyttig og ofte brugt).

Del 3: Kompatibilitet

Mange værktøjer distribueres i kilde eller binær form som. tar.gz eller. tar.bz2 fordi det er et "laveste fællesnævner" filformat: Meget ligesom de fleste Windows-brugere har adgang til. zip eller. rardekompressorer, vil de fleste Linux-installationer, selv de mest basale, have adgang til i det mindste tjære og gunzip, uanset hvor gammel eller pareret. Selv Android firmware har adgang til disse værktøjer.

Nye projekter, der er målrettet mod målgrupper, der kører moderne distributioner, kan meget vel fordeles i et mere moderne format, som. tar.xz( ved hjælp af komprimeringsformatet Xz( LZMA), som komprimerer bedre end gzip eller bzip2) eller. 7z, hvilket er enstil Zip- eller Rar-filformaterne, idet det både komprimerer og angiver et layout til indkapsling af flere filer i en enkelt fil.

Du kan ikke se. 7z brugt oftere af samme grund, at musik ikke sælges fra online-downloadbutikker i helt nye formater som Opus eller video i WebM.Kompatibilitet med folk, der kører gamle eller meget grundlæggende systemer.

Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.