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 agregacijadatoteka ...
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 nablah.tar.gz
, zatim odvojite (izbrišite) datotekublah.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 datoteku
blah.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
ikatran
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 kapsuliranjekatran
, i imate LZMA2'ed TAR arhivu, koja je jednako učinkovita kao i najnapredniji algoritam dostupan7-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.