21Aug

Care este avantajul utilizării formatului de fișier Tar de azi?

click fraud protection


Formatul de arhivare a tarzului este, în anii de calcul, o veritabilă metuzahă, dar este încă în uz intens astăzi. Ce face formatul de gudron atât de util după ce a început?

Întrebarea de astăzi &Sesiunea de răspuns vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.

Întrebarea

Reader SuperUser MarcusJ este curios în legătură cu formatul tar și de ce îl folosim încă după toți acești ani:

Știu că tarul a fost creat pentru arhivele de bandă în acea zi, dar astăzi avem formate de fișiere arhivate care ambeleagregate și execută compresie în același format de fișier logic.

Întrebări:

  • Există o pedeapsă de performanță în timpul etapelor de decomprimare a agregării /compression/ pentru utilizarea tarturilor încapsulate în gzip sau bzip2, în comparație cu utilizarea unui format de fișier care face agregarea și comprimarea în aceeași structură de date? Presupunem că durata de funcționare a compresorului care este comparat este identică( de exemplu, gzip și Deflate sunt similare).
  • instagram viewer
  • Există caracteristici ale formatului de fișier tar care alte formate de fișiere, cum ar fi. 7z și. zip nu au?
  • Deoarece tar este un format de fișiere vechi și există formate de fișiere mai noi, de ce este tar( fie că este încapsulat în gzip, bzip2 sau chiar noul xz) încă folosit astăzi pe GNU / Linux, Android, BSD și alteleSistemele de operare UNIX, pentru transferuri de fișiere, descărcări de programe și binare și, uneori, chiar și ca format de manager de pachete?

Aceasta este o întrebare perfect rezonabilă;atâtea lucruri s-au schimbat în lumea calculatoarelor în ultimii treizeci de ani, dar încă mai folosim formatul tar. Care e povestea?

Răspunsul la răspunsul

Contribuitor SuperUser Allquixotic oferă câteva informații despre longevitatea și funcționalitatea formatului tar:

Partea 1: Performanța

Iată o comparație a două fluxuri de lucru separate și a ceea ce fac.

Aveți un fișier pe disc blah.tar.gz, care este, de exemplu, 1 GB de date comprimate gzip care, atunci când sunt necomprimate, ocupă 2 GB( deci un raport de compresie de 50%).

Modul în care ați crea acest lucru, dacă ați face arhivarea și comprimarea separat, ar fi:

tar cf blah.tar fișiere. ..

Acest lucru ar rezulta în blah.tar, care este o simplă agregare a fișierelor.în formă necomprimată.

Apoi ați face

gzip blah.tar

Acesta va citi conținutul lui blah.tar de pe disc, le va comprima prin algoritmul de compresie gzip, va scrie conținutul în blah.tar.gz, apoi va deconecta( șterge) fișierul blah.gudron.

Acum, să decomprimăm!

Way 1

Aveți blah.tar.gz, într-un fel sau altul.

Decideți să executați:

gunzip blah.tar.gz

Aceasta va

  • CITEȘTE conținutul de date comprimat de 1GB de blah.tar.gz.
  • PROCESAȚI datele comprimate prin intermediul decompresorului gzip din memorie.
  • Deoarece memoria tampon se umple cu un "bloc" de date, WRITE datele necomprimate în fileblah.tar pe disc și repetați până când se citesc toate datele comprimate.
  • Deconectați( ștergeți) fișierul blah.tar.gz.

Acum, aveți blah.tar pe disc, care este necomprimat, dar conține unul sau mai multe fișiere în el, cu o structură de date foarte scăzută deasupra capului. Dimensiunea fișierului este, probabil, un cuplu de bytes mai mare decât suma tuturor datelor din fișier ar fi.

Ați rulat:

tar xvf blah.tar

Acesta va

  • CITEȘTE 2GB de conținut de date necomprimate din blah.tar și structurile de date ale formatului de fișier tar, inclusiv informații despre permisiunile fișierelor, numele fișierelor, directoarele etc.
  • WRITE to disk2 GB de date plus metadatele. Aceasta implică: traducerea informațiilor despre structura de date / metadate în crearea de fișiere și directoare noi pe disc, după caz, sau rescrierea fișierelor și directoarelor existente cu conținut nou de date.

Datele totale pe care le-am citit de pe disc în acest proces au fost 1GB( pentru gunzip) + 2GB( pentru tar) = 3GB.

Datele totale pe care le-am WROTE pe disc în acest proces au fost 2GB( pentru gunzip) + 2GB( pentru tar) + câteva octeți pentru metadate = aproximativ 4GB.

Way 2

Aveți blah.tar.gz, într-un fel sau altul.

Decideți să rulați:

tar xvzf blah.tar.gz

Aceasta va citi

  • conținutul de date comprimat de 1GB din blah.tar.gz, un bloc la un moment dat, în memorie.
  • PROCESAȚI datele comprimate prin intermediul decompresorului gzip din memorie.
  • Pe măsură ce memoria tampon de umplere se umple, țeavă va face ca datele, în memorie, până la parserul formatului de fișier tar, care va citi informațiile despre metadate etc. și datele de fișier necomprimate.
  • Deoarece buffer-ul de memorie se umple în parserul de fișiere tar, va scrie WIRELESS datele necomprimate pe disc, prin crearea de fișiere și directoare și completarea lor cu conținutul necomprimat.

Datele totale pe care le-am citit de pe disc în acest proces au fost 1GB de date comprimate, perioadă.

Datele totale pe care le-am WROTE pe disc în acest proces au fost 2GB de date necomprimate + câteva octeți pentru metadate = aproximativ 2GB.

Dacă observați, cantitatea de disc I / O în Way 2 este identică pe discul I / O realizat de către, de exemplu, programele Zip sau7-Zip, ajustându-se pentru orice diferență în raportul de compresie.

Și dacă raportul de compresie este îngrijorarea dvs., utilizați compresorul Xz pentru a încapsula gudronul și aveți o arhivă TAR LZMA2'ed, care este la fel de eficientă ca algoritmul cel mai avansat disponibil pentru 7-Zip: -)

Partea 2: Caracteristici

tar stochează permisiunile UNIX în cadrul metadatelor sale de fișiere și este foarte bine cunoscut și testat pentru ambalarea cu succes a unui director cu tot felul de permisiuni diferite, legături simbolice etc. Există mai mult de câteva cazuri în care s-ar putea să fie nevoie să globul o grămadă de fișiereîntr-un singur fișier sau flux, dar nu neapărat comprimat( deși compresia este utilă și adesea folosită).

Partea 3: Compatibilitate

Multe instrumente sunt distribuite în format sursă sau binar sub formă de fișiere. tar.gz sau. tar.bz2 deoarece reprezintă un format de fișier "cel mai mic numitor comun": la fel ca majoritatea utilizatorilor de Windows au acces la. zip sau. rardecompresoare, majoritatea instalărilor Linux, chiar și cele mai de bază, vor avea acces la cel puțin gudron și gunzip, indiferent cât de bătrân sau scos în jos. Chiar și firmware-urile Android au acces la aceste instrumente.

Proiectele noi care vizează publicul care rulează distribuții moderne pot fi foarte bine distribuite într-un format mai modern, cum ar fi. tar.xz( utilizând formatul de compresie Xz( LZMA), care comprimă mai bine decât gzip sau bzip2) sau. 7z,la formatele de fișiere Zip sau Rar prin faptul că ambele comprimă și specifică un aspect pentru încapsularea mai multor fișiere într-un singur fișier.

Nu vedeți. 7z utilizate mai des pentru același motiv că muzica nu este vândută din magazinele de descărcare online în formate noi, cum ar fi Opus, sau video în WebM.Compatibilitatea cu persoanele care rulează sisteme vechi sau foarte de bază.

Trebuie să adăugați ceva la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.