Početna » kako da » Koja je prednost korištenja formata Tar datoteka danas?

    Koja je prednost korištenja formata Tar datoteka danas?


    Format arhiviranja katrana je, u računalnim godinama, pravi metuzalem, ali je još uvijek u velikoj uporabi danas. Što čini tar format tako korisnim dugo nakon njegovog početka?

    Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.

    Pitanje

    Čitač SuperUser MarcusJ je znatiželjan o tar formatu i zašto ga još uvijek koristimo nakon svih ovih godina:

    Znam da je katran napravljen za arhive traka u zadnje vrijeme, ali danas imamo formate arhivskih datoteka koje objedinjuju datoteke i izvode kompresiju unutar istog logičkog formata datoteke.

    Pitanja:

    • Postoji li kazna izvedbe tijekom faza agregacije / kompresije / dekompresije za korištenje tar enkapsuliranog u gzip ili bzip2, u usporedbi s formatom datoteke koji agregaciju i kompresiju čini u istoj strukturi podataka? Pretpostavimo da je vrijeme izvođenja kompresora koje se uspoređuje identično (npr. Slični su gzip i Deflate).
    • Postoje li značajke formata tar datoteka koje drugi formati datoteka, kao što su .7z i .zip, nemaju?
    • Budući da je tar takav stari format datoteke, a noviji formati datoteka postoje danas, zašto je tar (bez obzira je li enkapsuliran u gzip, bzip2 ili čak novi xz) još uvijek tako široko korišten na GNU / Linuxu, Androidu, BSD-u i drugim UNIX operativni sustavi, za prijenos datoteka, izvorne i binarne preuzimanja programa, a ponekad čak i kao upravitelj paketa?

    To je savršeno razumno pitanje; toliko se promijenilo u svijetu računala u posljednjih trideset godina, ali još uvijek koristimo tar format. Kakva je priča?

    Odgovor

    Doprinositelj SuperUser-a Allquixotic nudi uvid u dugovječnost i funkcionalnost tar formata:

    Dio 1: Izvedba

    Evo usporedbe dva odvojena tijeka rada i onoga što oni rade.

    Imate datoteku na disku blah.tar.gz što je, recimo, 1 GB gzip-komprimiranih podataka koji, kada nisu komprimirani, zauzimaju 2 GB (tako da omjer kompresije od 50%).

    Način na koji ćete to stvoriti, ako želite zasebno arhivirati i komprimirati, bit će:

    tar cf blah.tar datoteke ... 

    To bi rezultiralo blah.tar što je samo agregacija datoteka ...  u nekomprimiranom obliku.

    Onda bi učinio

    gzip blah.tar 

    To bi pročitalo sadržaj blah.tar s diska, komprimirati ih pomoću gzip algoritma kompresije, pisati sadržaj na blah.tar.gz, zatim odvojite (izbrišite) datoteku blah.tar.

    Sada, hajde dekomprimirati!

    Način 1

    Imaš blah.tar.gz, na ovaj ili onaj način.

    Vi odlučite pokrenuti:

    gunzip blah.tar.gz 

    Ovo će

    • PROČITAJTE 1GB komprimiranog sadržaja podataka blah.tar.gz.
    • PROCES komprimiranih podataka putem gzip dekompresor u memoriji.
    • Budući da se memorijski međuspremnik puni “blokom” podataka, NAPIŠITE nekomprimirane podatke u datotekublah.tar na disku i ponavljajte sve dok ne pročitate sve komprimirane podatke.
    • Prekinite vezu (brisanje) datoteke blah.tar.gz.

    Sada, jesi blah.tar na disku, koji je nekomprimiran ali sadrži jednu ili više datoteka unutar njega, s vrlo niskim opterećenjem strukture podataka. Veličina datoteke je vjerojatno nekoliko bajtova veći od zbroja svih podataka datoteke.

    Ti trči:

    tar xvf blah.tar 

    Ovo će

    • PROČITAJ 2GB sadržaja nekomprimiranih podataka blah.tar i katran podatkovne strukture formata datoteke, uključujući informacije o dozvolama za datoteke, nazivima datoteka, direktorijima, itd.
    • Zapiši na disk 2 GB podataka plus metapodatke. To uključuje: prevođenje strukture podataka / metapodataka u kreiranje novih datoteka i direktorija na disku prema potrebi, ili ponovno pisanje postojećih datoteka i direktorija s novim sadržajem podataka.

    Ukupni podaci koje mi ČITATI s diska u ovom procesu bio je 1GB (za gunzip) + 2GB (za tar) = 3GB.

    Ukupni podaci koje mi SASTAVILE na disk u ovom procesu bio je 2 GB (za gunzip) + 2 GB (za tar) + nekoliko bajtova za metapodatke = oko 4 GB.

    Način 2

    Imaš blah.tar.gz, na ovaj ili onaj način.

    Vi odlučite pokrenuti:

    tar xvzf blah.tar.gz 

    Ovo će

    • PROČITAJTE 1GB komprimiranog sadržaja podataka blah.tar.gz, po jedan blok u memoriju.
    • PROCES komprimiranih podataka putem gzip dekompresor u memoriji.
    • Kako se memorijski spremnik puni, bit će cijev te podatke, u memoriji, do katran parser formata datoteke, koji će pročitati informacije o metapodacima, itd. i podatke o nekomprimiranoj datoteci.
    • Kao što se memorijski spremnik puni u katran razvrstavanjem datoteka, ona će NAPISATI nekomprimirane podatke na disk, kreirajući datoteke i direktorije i popunjavajući ih nekomprimiranim sadržajem.

    Ukupni podaci koje mi ČITATI s diska u ovom procesu bilo je 1 GB komprimiranih podataka, razdoblje.

    Ukupni podaci koje mi SASTAVILE na disk u ovom procesu bilo je 2 GB nekomprimiranih podataka + nekoliko bajtova za metapodatke = oko 2 GB.

    Ako primijetite, količina I / O diska u disku Način 2 je identičan na I / O disk izveden od, recimo, poštanski ili7-Poštanski programa, prilagođavajući se svim razlikama u omjeru kompresije.

    A ako je omjer kompresije vaša briga, upotrijebite xz kompresor za kapsuliranje katran, i imate LZMA2'ed TAR arhivu, koja je jednako učinkovita kao i najnapredniji algoritam dostupan 7-Poštanski :-)

    Dio 2: Značajke

    katran pohranjuje UNIX dozvole unutar svojih datotečnih metapodataka, te je vrlo dobro poznat i testiran za uspješno pakiranje direktorija sa svim vrstama različitih dozvola, simboličkih veza, itd. Postoji više od nekoliko slučajeva u kojima je potrebno unijeti hrpu datoteka u jednu datoteku ili stream, ali ne i nužno komprimirati (iako je kompresija korisna i često se koristi).

    Dio 3: Kompatibilnost

    Mnogi alati su distribuirani u izvornom ili binarnom obliku kao .tar.gz ili .tar.bz2 jer je to format datoteke "najmanji zajednički nazivnik": slično kao što većina korisnika sustava Windows ima pristup .zip ili .rar dekompresorima, većina Linux instalacija, čak i najosnovnije, imat će pristup barem katranu i gunzipu, bez obzira na starost ili smanjenje. Čak i firmware za Android ima pristup tim alatima.

    Novi projekti koji ciljaju publiku s modernim distribucijama mogu se vrlo dobro distribuirati u modernijem obliku, kao što je .tar.xz (koristeći kompresijski format Xz (LZMA), koji se bolje komprimira od gzip ili bzip2) ili .7z, što je slično Formati datoteka Zip ili Rar u tome što oboje komprimira i određuje izgled za enkapsuliranje više datoteka u jednu datoteku.

    Ne vidite da se .7z češće koristi iz istog razloga zbog kojeg se glazba ne prodaje iz online trgovina za preuzimanje u potpuno novim formatima kao što je Opus ili videozapis u WebM-u. Kompatibilnost s osobama koje upravljaju starim ili vrlo osnovnim sustavima.


    Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.