Darvas arhivēšanas formāts skaitļošanas gados ir patiess Metusāls, bet šodien tas joprojām ir smagā lietošanā. Kas padara tar formātu tik noderīgu ilgu laiku pēc tā izveidošanas?
Šodienas jautājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, kas ir kopienas vadīta Q & A tīmekļa vietņu grupa.
SuperUser lasītājs MarcusJ ir interesanti par tar formātu un kāpēc mēs to joprojām izmantojam pēc visiem šiem gadiem:
Es zinu, ka dienas laikā ir izveidota lentu arhīvu darva, taču šodien mums ir arhīvu failu formāti, kas apvieno failus un veic saspiešanu tajā pašā loģiskā faila formātā.
Jautājumi:
- Vai agregācijas / saspiešanas / dekompresijas posmos agregācijas / kompresijas / dekompresijas posmos ir izpildes sods par gripas vai bzip2 iekapsulētā taru izmantošanu, salīdzinot ar tāda faila formāta izmantošanu, kas apvieno un saspiežas tajā pašā datu struktūrā? Pieņemsim, ka salīdzināmā kompresora darbības laiks ir identisks (piemēram, gzip un Deflate ir līdzīgi).
- Vai ir darf formāta formāta funkcijas, ka citos failu formātos, piemēram, .7z un .zip nav?
- Tā kā tar ir tik vecs faila formāts un šodien ir jaunāki failu formāti, kāpēc dars (vai tas ir iekapsulēts gzip, bzip2 vai pat jaunajā xz) joprojām tiek plaši izmantots šodien GNU / Linux, Android, BSD un citos šādos UNIX operētājsistēmas, failu pārsūtīšanai, programmas avota un bināro lejupielādi, un dažreiz pat kā paketes pārvaldnieka formātu?
Tas ir pilnīgi saprātīgs jautājums; pēdējos trīsdesmit gados tik daudz ir mainījusies skaitļošanas pasaulē, bet mēs joprojām izmantojam tar formātu. Kāds ir stāsts?
SuperUser veicinātājs Allquixotic piedāvā kādu ieskatu tar formāta ilgmūžībā un funkcionalitātē:
1.daļa: veiktspēja
Šeit ir divu atsevišķu darbplūsmu salīdzinājums un tas, ko viņi dara.
Jums ir fails diskā
blah.tar.gz
proti, 1 GB gzip-saspiestu datu, kas, nesaspiesti, aizņem 2 GB (tā saspiešanas koeficients ir 50%).Veids, kā jūs to izveidojat, ja vēlaties atsevišķi arhivēt un saspiest, ir:
tar cf blah.tar faili ...
Tas radītu situāciju
blah.tar
kas ir tikai apvienošanāsfaili ...
nesaspiests formā.Tad jūs darītu
gzip blah.tar
Tas varētu izlasīt satura saturu
blah.tar
no diska, saspiest tos ar gzip kompresijas algoritmu, rakstīt saturu uzblah.tar.gz
, tad atsaista (dzēš) failublah.tar
.Tagad atlaidīsim!
Ceļš 1
Tev ir
blah.tar.gz
, vienā veidā vai citā.Jūs nolemjat palaist:
gunzip blah.tar.gz
Tas būs
- IZLASIET 1GB saspiestu datu saturu
blah.tar.gz
.- PROCESS saspiestos datus, izmantojot
gzip
dekompresors atmiņā.- Tā kā atmiņas buferis aizpilda datus ar "bloka" vērtību, RAKSTIET nesaspiestos datus failā
blah.tar
uz diska un atkārtojiet, līdz visi saspiestie dati tiek nolasīti.- Atsaistīt (dzēst) failu
blah.tar.gz
.Tagad jums ir
blah.tar
uz diska, kas ir nesaspiests, bet tajā ir viens vai vairāki faili ar ļoti zemu datu struktūras pieskaitāmās izmaksas. Iespējams, ir faila lielumspāris baitus lielāks par visu failu datu summu.Tu skrien:
tar xvf blah.tar
Tas būs
- NOLASĪT 2 GB nesaspiestu datu saturu
blah.tar
undarva
faila formāta datu struktūras, tostarp informācija par failu atļaujām, failu nosaukumiem, direktorijām utt.- RAKSTIET disku, lai iegūtu 2 GB datu un metadatus. Tas ietver: datu struktūras / metadatu informācijas tulkošanu, ja nepieciešams, izveidojot jaunus failus un direktorijus, vai pārrakstot esošos failus un direktorijus ar jaunu datu saturu.
Kopējie dati mumsLasīt no diska šajā procesā bija 1 GB (par gunzip) + 2 GB (taram) = 3 GB.
Kopējie dati mumsWROTE uz diska šajā procesā bija 2GB (par gunzip) + 2 GB (par darvu) + daži baiti par metadatus = apmēram 4 GB.
2. ceļš
Tev ir
blah.tar.gz
, vienā veidā vai citā.Jūs nolemjat palaist:
tar xvzf blah.tar.gz
Tas būs
- IZLASIET 1GB saspiestu datu saturu
blah.tar.gz
, bloks vienlaikus, atmiņā.- PROCESS saspiestos datus, izmantojot
gzip
dekompresors atmiņā.- Tā kā atmiņas buferis aizpilda, tas būscaurule ka dati, atmiņā, līdz
darva
faila formāta parsētājs, kurš izlasīs informāciju par metadatus utt. un nesaspiestajiem faila datiem.- Tā kā atmiņas buferis aizpilda
darva
faila parsētājs, tā RAKSTS nesaspiesti dati uz disku, izveidojot failus un direktorijus un aizpildot tos ar nesaspiestu saturu.Kopējie dati mumsLasīt no diska šajā procesā bija 1GB saspiestu datu periodu.
Kopējie dati mumsWROTE uz diska šajā procesā bija 2GB nesaspiesti dati + daži baiti metadatiem = aptuveni 2 GB.
Ja pamanāt, diska I / O daudzums ir2. ceļš iridentisks uz diska I / O veic, teiksim,
Zip
vai7-zip
programmas, pielāgojot jebkurai kompresijas pakāpes atšķirībām.Un ja saspiešanas koeficients ir jūsu rūpes, izmantojiet
Xz
kompresors iekapsulētdarva
, un jums ir LZMA2'ed TAR arhīvs, kas ir tikpat efektīvs kā vismodernākais algoritms, kas pieejams7-zip
:-)2.daļa: Funkcijas
darva
saglabā UNIX atļaujas savos faila metadatos, un tā ir ļoti labi zināma un pārbaudīta, lai veiksmīgi iepakotu direktoriju ar visu veidu dažādām atļaujām, simboliskajām saitēm utt.Ir vairāk nekā daži gadījumi, kad vienam failam vai straumei var būt nepieciešams ielīmēt virkni failu, taču tas nav obligāti jāsaspiež (lai arī kompresija ir noderīga un bieži vien tiek izmantota).3.daļa: savietojamība
Daudzi rīki tiek izplatīti avota vai bināro formā kā .tar.gz vai .tar.bz2, jo tas ir "zemākais kopsaucējs" faila formāts: tāpat kā lielākajai daļai Windows lietotāju ir pieejami .zip vai .rar dekompresori, lielākā daļa Linux instalāciju, pat visvienkāršākā, būs pieejams vismaz tar un gunzip, neatkarīgi no tā, cik vecs vai sagriezts. Pat šiem Android ierīcēm ir piekļuve šiem rīkiem.
Jauni projekti, kuru mērķauditorija tiek izmantota mūsdienu izplatīšanai, ļoti labi var izplatīties mūsdienīgākā formātā, piemēram, .tar.xz (izmantojot Xz (LZMA) kompresijas formātu, kas saspiež labāk nekā gzip vai bzip2) vai .7z, kas ir līdzīgs Zip vai Rar failu formāti, jo tas gan saspiež un konkretizē izkārtojumu, lai iekļautu vairākus failus vienā failā.
Jūs neredzat .7z biežāk tiek izmantots tāda paša iemesla dēļ, ka mūzika netiek pārdota no tiešsaistes lejupielādes veikaliem pavisam jaunos formātos, piemēram, Opus vai video WebM. Savietojamība ar cilvēkiem, kuri darbojas vecās vai ļoti vienkāršās sistēmās.
Vai kaut ko pievienot paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem? Šeit skatiet pilnu diskusiju pavedienu.