If-Koubou

Koja je prednost korištenja Tar File Format danas?

Koja je prednost korištenja Tar File Format danas? (Kako da)


Format arhiviranja tar je, u računalnim godinama, pravi Methuselah, ali još uvijek je u teškom korištenju danas. Što čini format toliko korisno dugo nakon njegova nastanka?

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Pitanje

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

Znam da je tar za arhive na vrpcu natrag na dan, ali danas imamo arhive formate datoteka koje oba skupljaju datoteke i izvode kompresiju unutar istog logičkog formata datoteka.

Pitanja:

  • Postoji li kazna za zaračunavanje / kompresija / dekompresiju za upotrebu katrana obuhvaćena gzipom ili bzipom2, u usporedbi s upotrebom formata datoteke koja agregira i komprimira u istoj strukturi podataka? Pretpostavimo da se runtime kompresora uspoređuju identični (npr. Gzip i Deflate su slični).
  • Postoje li značajke formata tar datoteke koji drugi formati datoteka, kao što su .7z i .zip nemaju?
  • Budući da je katastar takav stari format datoteka i danas postoje novi formati datoteka, zašto je tar (bez obzira jesu li zabilježeni u gzipu, bzip2 ili čak i novom xz) još uvijek naširoko koristi na GNU / Linuxu, Androidu, BSD i drugim takvim UNIX operacijskih sustava, za prijenos datoteka, izvor programa i binarna preuzimanja, a ponekad i kao oblik upravitelja paketima?

To je savršeno razumno pitanje; toliko se toga promijenilo u računalnom svijetu u proteklih trideset godina, ali još uvijek koristimo format tar. Što je to priča?

Odgovor

SuperUser suradnik Allquixotic pruža uvid u dugovječnost i funkcionalnost tar formata:

Dio 1: Izvedba

Evo usporedbe dvaju odvojenih tijekova rada i onoga što rade.

Imate datoteku na diskublah.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 biste to stvorili, ako biste zasebno obavili arhiviranje i kompresiju, bili bi:

tar cf blah.tar datoteke ... 

To bi rezultiraloblah.tar što je puka agregacijadatoteka ... u nekomprimiranom obliku.

Onda biste to učinili

gzip blah.tar 

Ovo bi pročitalo sadržajblah.tar s diska, stisnuti ih kroz algoritam gzip kompresije, napisati sadržajblah.tar.gz, pa prekinite vezu (brisanje) datotekeblah.tar.

Sada, otpusti!

Način 1

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

Odlučite se pokrenuti:

gunzip blah.tar.gz 

Ovo će

  • PROČITAJTE 1GB komprimirani sadržaj podataka odblah.tar.gz.
  • PROCESI komprimirani podaci krozgzip dekompresora u memoriji.
  • Budući da se memorijski međuspremnik popunjava podatkom "bloka", unesite nekomprimirane podatke u datotekublah.tar na disku i ponovite sve dok se ne čitaju svi komprimirani podaci.
  • Prekini vezu (brisanje) datotekeblah.tar.gz.

Sada, imateblah.tar na disku, koji je nekompresiran, ali sadrži jednu ili više datoteka u njemu, s vrlo niskom strukturom podataka iznad glave. Vjerojatno je veličina datotekepar bajtova veća od zbroja svih podataka o datotekama.

Ti trči:

tar xvf blah.tar 

Ovo će

  • Čitajte 2GB nekomprimiranih podatakablah.tar ikatran strukture podataka formata datoteka, uključujući informacije o dozvolama datoteka, nazive datoteka, imenike itd.
  • PISA na disk 2GB podataka plus metapodatke. To uključuje sljedeće: prevođenje podataka strukture / metapodataka u stvaranje novih datoteka i direktorija na disku prema potrebi ili prepisivanje postojećih datoteka i direktorija s novim sadržajima podataka.

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

Ukupni podaci miSASTAVILE na disk u ovom procesu je 2GB (za gunzip) + 2GB (za tar) + nekoliko bytes za metapodatke = oko 4GB.

Put 2

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

Odlučite se pokrenuti:

tar xvzf blah.tar.gz 

Ovo će

  • PROČITAJTE 1GB komprimirani sadržaj podataka odblah.tar.gz, blok odjednom, u memoriju.
  • PROCESI komprimirani podaci krozgzip dekompresora u memoriji.
  • Kako se memorijski međuspremnik popunjava, to ćecijev da podaci, u memoriji, dokatran parsera formata datoteka koji će čitati informacije o metapodacima i sl. te podatke koji nisu komprimirani.
  • Kako se memorijski memorijski spremnik puni ukatran file parser, to će WRITE ne komprimirani podaci na disk, stvaranjem datoteka i direktorija i popunjavajući ih s nekompresiranim sadržajem.

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

Ukupni podaci miSASTAVILE na disk u ovom procesu bio je 2GB nekomprimiranih podataka + nekoliko bajtova za metapodatke = oko 2 GB.

Ako primijetite, količina I / O diska u sustavuPut 2 jeidentičan na disk I / O izvode, recimo,poštanski ili7-Poštanski programa, podešavanje za bilo kakve razlike u omjeru kompresije.

Ako je vaš omjer kompresije, upotrijebitexz kompresor za inkapsulacijukatran, a imate LZMA2'A TAR arhivu koja je jednako učinkovita kao i najnapredniji algoritam koji je dostupan7-Poštanski :-)

Dio 2: Značajke

katran pohranjuje UNIX dopuštenja unutar svojih metapodataka datoteka i vrlo je poznat i testiran za uspješno spremanje direktorija sa svim vrstama različitih dozvola, simboličnih veza itd.Postoji više od nekoliko slučajeva u kojima bi se moglo zatrebati gomila datoteka u jednu datoteku ili stream, ali ne nužno ga komprimirati (iako je kompresija korisna i često se koristi).

Dio 3: Kompatibilnost

Mnogi alati se distribuiraju u obliku izvora ili binarnog formata kao .tar.gz ili .tar.bz2, jer je format datoteke "najniži zajednički nazivnik": slično kao i većina korisnika sustava Windows imaju pristup .zip ili .rar dekompresorima, većini Linux instalacija, čak i najosnovniji, imat će pristup baru katranu i gunzipu, bez obzira koliko je star ili srušen. Čak i Androidovi firmwares imaju pristup tim alatima.

Novi projekti koji ciljaju publiku koja koristi moderne distribucije može se vrlo dobro distribuirati u suvremenijem formatu, kao što je .tar.xz (koristeći format kompresije Xz (LZMA), koji se komprimira bolje od gzip ili bzip2) ili .7z koji je sličan Zip ili Rar formata datoteka, jer oboje oblaže i određuje izgled za inkapsuliranje više datoteka u jednu datoteku.

Ne vidite .7z češće se koristi iz istog razloga zbog kojeg glazba nije prodana iz online trgovina za preuzimanje u potpuno novim formatima poput Opusa ili videozapisa u WebM-u. Kompatibilnost s ljudima koji rade drevni ili vrlo osnovni sustavi.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.