Care este avantajul utilizării formatului de fișier Tar de azi?
Formatul de arhivare a tarului este, în anii de calcul, un veritabil Metuzalah, dar este încă în uz intens astăzi. Ceea ce face ca formatul de gudron să fie atât de util după ce a început?
Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.
Intrebarea
Editorul de aplicații SuperUser MarcusJ este interesat de formatul de tar și de ce îl folosim încă după toți acești ani:
Știu că ghidața a fost creată pentru arhivele de bandă în acea zi, dar astăzi avem formate de fișiere arhivate care ambele agregate și execută compresie în același format de fișier logic.
Întrebări:
- Există o pedeapsă de performanță în timpul etapelor de agregare / compresie / decompresie pentru utilizarea tar încapsulate în gzip sau bzip2, comparativ 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 comparat este identică (de exemplu, gzip și Deflate sunt similare).
- Există caracteristici ale formatului de fișier tar care alte formate de fișiere, cum ar fi .7z și .zip nu au?
- Din moment ce tar este un format de fișier vechi și formate de fișiere mai noi există astăzi, 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 alte UNIX sisteme de operare, 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ât de multe s-au schimbat în lumea calculatoarelor în ultimii treizeci de ani, dar încă mai folosim formatul de tar. Care e povestea?
Răspunsul
Contribuitorul Superquest Allquixotic oferă câteva informații despre longevitatea și funcționalitatea formatului tar:
Partea 1: Performanță
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, să zicem, 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 avea ca rezultat
blah.tar
care este o simplă agregare afișiere ...
în formă necomprimată.Atunci ai face
gzip blah.tar
Aceasta va citi conținutul
blah.tar
de pe disc, comprimați-le prin algoritmul de compresie gzip, scrieți conținutulblah.tar.gz
, apoi deconectați (ștergeți) fișierulblah.tar
.Acum, să decomprimăm!
Calea 1
Tu ai
blah.tar.gz
, într-un fel sau altul.Voi decideți să rulați:
gunzip blah.tar.gz
Asta va
- CITIȚI conținutul de date comprimat de 1 GB din
blah.tar.gz
.- PROCESAREA datelor comprimate prin
gzip
decompresor în memorie.- Pe măsură ce buffer-ul de memorie se umple cu un "bloc" în valoare de date, WRITE datele necomprimate în fișier
blah.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 ai
blah.tar
pe disc, care este necomprimat, dar conține unul sau mai multe fișiere în el, cu structură de date foarte scăzută. Dimensiunea fișierului este probabil o pereche de octeți mai mare decât suma tuturor datelor din fișiere.Alergi:
tar xvf blah.tar
Asta va
- CITIȚI conținutul de date 2GB de date necomprimate
blah.tar
sigudron
structura de date a formatelor de fișier, inclusiv informații despre permisiunile fișierelor, numele fișierelor, directoarele etc..- WRITE la disc discul de 2 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 avem CITIT din disc în acest proces a fost 1GB (pentru gunzip) + 2GB (pentru tar) = 3GB.
Datele totale pe care le avem SCRIS la disc în acest proces a fost de 2GB (pentru gunzip) + 2GB (pentru tar) + câteva octeți pentru metadate = aproximativ 4GB.
Calea 2
Tu ai
blah.tar.gz
, într-un fel sau altul.Voi decideți să rulați:
tar xvzf blah.tar.gz
Asta va
- CITIȚI conținutul de date comprimat de 1 GB din
blah.tar.gz
, un bloc la un moment dat, în memorie.- PROCESAREA datelor comprimate prin
gzip
decompresor în memorie.- Pe măsură ce tamponul de memorie se umple, se va face țeavă că datele, în memorie, până la
gudron
formatul de parser, care va citi informațiile despre metadate etc. și datele de fișier necomprimate.- Pe măsură ce bufferul de memorie se umple în
gudron
parser de fișiere, 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 avem CITIT de pe disc în acest proces a fost 1GB de date comprimate, perioadă.
Datele totale pe care le avem SCRIS la disc în acest proces a fost 2 GB de date necomprimate + câteva octeți pentru metadate = aproximativ 2 GB.
Dacă observați, cantitatea de disc I / O în Calea 2 este identic la discul I / O realizat de, să zicem,
Zip
sau7-Zip
programe, ajustând diferențele de compresie.Și dacă raportul de compresie este preocuparea dvs., utilizați
XZ
compresor pentru încapsularegudron
, și aveți arhivă TAR LZMA2'ed, care este la fel de eficientă ca algoritmul cel mai avansat disponibil7-Zip
:-)Partea 2: Caracteristici
gudron
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 în un singur fișier sau flux, dar nu neapărat comprimat (deși compresia este utilă și adesea utilizată).Partea 3: Compatibilitate
Multe instrumente sunt distribuite în format sursă sau binar sub formă de fișiere .tar.gz sau .tar.bz2, deoarece acestea reprezintă un format de fișier cu cel mai mic numitor comun: la fel ca majoritatea utilizatorilor de Windows au acces la decompresoare .zip sau .rar, cele mai multe instalații 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 mai 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, formatele de fișiere Zip sau Rar prin aceea că ambele comprimă și specifică un aspect pentru încapsularea mai multor fișiere într-un singur fișier.
Nu vedeți .7z folosit mai des pentru același motiv pentru care 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ă.
Aveți ceva de adăugat 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.