Šiandieninė klausimų ir atsakymų sesija pateikiama su "SuperUser" - "Stack Exchange", bendruomenės valdoma Q & A grupių asociacija.
Klausimas
"SuperUser" skaitytojas MarcusJ yra įdomu apie "DUR" formatą ir kodėl mes vis dar naudojame jį per visus šiuos metus:
I know that tar was made for tape archives back in the day, but today we have archive file formats that both aggregate files and perform compression within the same logical file format.
Questions:
- Is there a performance penalty during the aggregation/compression/decompression stages for using tar encapsulated in gzip or bzip2, when compared to using a file format that does aggregation and compression in the same data structure? Assume the runtime of the compressor being compared is identical (e.g. gzip and Deflate are similar).
- Are there features of the tar file format that other file formats, such as.7z and.zip do not have?
- Since tar is such an old file format, and newer file formats exist today, why is tar (whether encapsulated in gzip, bzip2 or even the new xz) still so widely used today on GNU/Linux, Android, BSD, and other such UNIX operating systems, for file transfers, program source and binary downloads, and sometimes even as a package manager format?
Tai visiškai pagrįstas klausimas; per pastaruosius trisdešimt metų kompiuterių pasaulyje labai pasikeitė, bet vis dar naudojame "tar" formatą. Kokia istorija?
Atsakymas
"SuperUser" autorius "Allquixotic" siūlo keletą įžvalgų apie "tar" formato ilgaamžiškumą ir funkcionalumą:
Part 1: Performance
Here is a comparison of two separate workflows and what they do.
You have a file on disk
blah.tar.gz
tarkim, 1 GB gzip suspaustų duomenų, kurie nesuspaustų užima 2 GB (tokiu būdu suspaudimo lygis yra 50%).
Tokiu būdu, jei norite tai padaryti, jei atskirai atliktumėte archyvavimą ir suspaudimą, būtų:
tar cf blah.tar files …
Tai sukeltų
blah.tar
kuris yra tik"
files …
nesuspaustos formos.
Tada tu padarei
gzip blah.tar
Tai perskaičiau turinį
blah.tar
iš disko suspauskite juos gzip kompresijos algoritmu, rašykite turinį į
blah.tar.gz
tada atsieti (ištrinti) failą
blah.tar
Dabar atskleiskime!
1 būdas
Tu turi
blah.tar.gz
vienaip ar kitaip.
Jūs nusprendžiate paleisti:
gunzip blah.tar.gz
Tai bus
-
SKAITYTI 1GB suspausto duomenų turinį
blah.tar.gz
-
Perdirbkite suspaustus duomenis per
gzip
dekompresorius atmintyje.
-
Kadangi atminties buferis užpildo "bloko" vertes duomenis, Įrašykite nesuspaustytus duomenis į failą
blah.tar
ant disko ir pakartokite, kol bus nuskaityti visi suglaudinti duomenys.
-
Atšaukti (ištrinti) failą
blah.tar.gz
Dabar turiu
blah.tar
diske, kuris yra nesuspaustų, bet kuriame yra vienas ar keli failai, su labai maža duomenų perdavimo struktūra. Turbūt yra failo dydispora baitų didesnė nei visų failo duomenų suma.
Bėgi:
tar xvf blah.tar
Tai bus
-
SKAITYTI 2GB nesuspaustų duomenų turinį
blah.tar
ir
tar
failo formato duomenų struktūros, įskaitant informaciją apie failų leidimus, failų pavadinimus, katalogus ir tt
- Įrašykite 2 GB duomenų ir metaduomenų diską. Tai apima: duomenų struktūros / metaduomenų informacijos vertimą į atitinkamų diskelių ir katalogų sukūrimą, arba perrašymą esamų failų ir katalogų su naujais duomenimis.
Visi duomenys mes SKAITYTI iš disko šiame procese buvo 1 GB (gunzip) + 2 GB (tarui) = 3 GB.
Visi duomenys mes WROTE į diską šiame procese buvo 2 GB (gunzip atveju) + 2 GB (tarui) + keli baitai metaduomenims = apie 4 GB.
2 būdas
Tu turi
blah.tar.gz
vienaip ar kitaip.
Jūs nusprendžiate paleisti:
tar xvzf blah.tar.gz
Tai bus
-
SKAITYTI 1GB suspausto duomenų turinį
blah.tar.gz
blokas vienu metu, į atmintį.
-
Perdirbkite suspaustus duomenis per
gzip
dekompresorius atmintyje.
-
Kai atminties buferis užpildys, bus vamzdis kad duomenys, atminties, per
tar
failo formato analizatorius, kuris perskaitys informaciją apie metaduomenis ir tt bei nesuspaustytus failo duomenis.
-
Kaip atminties buferis užpildo
tar
failo analizatorius, WRITE nesuspaustų duomenų į diską, kurdami failus ir katalogus ir užpildydami nesuspaustą turinį.
Visi duomenys mes SKAITYTI iš disko šiame procese buvo 1GB suspausto duomenų, laikotarpis.
Visi duomenys mes WROTE šiame procese diske buvo 2GB nesuspaustų duomenų + keletą baitų metaduomenims = apie 2 GB.
Jei pastebėjote, disko įvesties / išvesties kiekis į 2 būdas yraidentiškas į diską I / O atliekama, tarkim,
Zip
arba
7-Zip
programas, derindamos bet kokius gniuždymo santykio skirtumus.
Ir jei suspaudimo laipsnis yra jūsų rūpestis, naudokite
Xz
kompresorius įkapsuliuoti
tar
ir jūs turite LZMA2'ed TAR archyvą, kuris yra toks pat veiksmingas, kaip ir labiausiai pažengęs algoritmas
7-Zip
:-)
2 dalis. Funkcijos
tar
saugo UNIX leidimus savo failų metaduomenyse ir yra labai gerai žinomas ir išbandytas sėkmingai supakuoti katalogą su įvairiais skirtingais leidimais, simbolinėmis nuorodomis ir tt. Yra daugiau nei keletas atvejų, kai gali reikėti surinkti daugybė failų vieną failą ar srautą, bet nebūtinai suspausti (nors suspaudimas yra naudingas ir dažnai naudojamas).
3 dalis. Suderinamumas
Daugelis įrankių platinami šaltinio arba dvejetainiu formatu kaip.tar.gz arba.tar.bz2, nes tai yra "mažiausias bendrojo vardiklio" failo formatas: daugeliui Windows vartotojų prieiga prie.zip arba.rar dekompresorių, dauguma Linux įrenginių, net paprasčiausias, turės prieigą prie bent dervos ir gunzipo, nesvarbu, kiek senas ar pareduotas. Net "Android" firmware turi prieigą prie šių įrankių.
Nauji projektai, skirti auditorijoms, kuriose naudojami modernūs platinimai, gali labai gerai platinti modernesniu formatu, pvz., ".Tar.xz" (naudojant Xz (LZMA) suspaudimo formatą, kuris suspaudžia geriau nei gzip arba bzip2) arba.7z, kuris yra panašus į Zip arba Rar failų formatus, nes jis abu suspaudžia ir nurodo išdėstymą, apimantį keletą failų į vieną failą.
Jūs nematote.7z dažniau naudojamas dėl tos pačios priežasties, kad muzika nėra parduodama iš internetinių atsisiųstų parduotuvių visiškai naujose formose, tokiose kaip "Opus", arba "WebM" vaizdo įraše. Suderinamumas su žmonėmis, naudojančiais senas ar labai paprastas sistemas.
Ar turite ką nors įtraukti į paaiškinimą? Garsas išjungtas komentaruose.Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų? Patikrinkite visą diskusijų temą čia.