21Aug
Dārza arhivēšanas formāts skaitļošanas gados ir patiess Metusālsahs, taču š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ājums &Atbildes sesija mums priecājas par SuperUser - Stack Exchange, kas ir kopienas un Q & A tīmekļa vietņu grupa.
Jautājums
SuperUser lasītājs MarcusJ ir interesanti par tar formātu un to, kāpēc mēs to joprojām izmantojam pēc visiem šiem gadiem:
Es zinu, ka dienā tika izveidota tarta arhīvu arhīvs, bet šodien mums ir arhīvu failu formāti, kas abiapkopot failus un veikt saspiešanu tajā pašā loģiskā faila formātā.
Jautājumi:
- Vai /compression/ agregācijas dekompresijas posmos agregācijas izpildes sods tiek izmantots, lai izmantotu taru, kas iekapsulēts gzip vai bzip2, salīdzinot ar tāda faila formāta lietošanu, kas veic agregāciju un kompresiju 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 tāds vecais 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), kas šodien tik plaši tiek izmantots GNU / Linux, Android, BSD un citāsUNIX operētājsistēmas, failu pārsūtīšanai, programmas avota un bināro lejupielādei, un dažreiz pat kā pakešu pārvaldnieka formātā?
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?
Atbildes
SuperUser atbildētājs Allquixotic piedāvā padziļinātu izpratni par tar formāta ilgmūžību un funkcionalitāti:
1.daļa: Veiktspēja
Šeit ir divu atsevišķu darbplūsmu un to darījumu salīdzinājums.
Jums ir fails diskā blah.tar.gz, kas ir, teiksim, 1 GB gzip saspiestu datu, kas, nesaspiežot, aizņem 2 GB( tā saspiešanas koeficients ir 50%).
Veids, kā jūs to izveidotu, ja vēlaties arhivēt un saspiest atsevišķi, būtu:
tar tar cf blah.tar faili. ..Tas radīs blah.tar, kas ir tikai failu apvienošana. .nesaspiesti.
Tad jūs varētu darīt
gzip blah.tarTas lasītu saturu blah.tar no diska, saspiest tos ar gzip kompresijas algoritmu, rakstīt saturu blah.tar.gz, pēc tam atsaistīt( izdzēst) failu blah.darva.
Tagad atlaidīsim!
Way 1
Vienā vai otrā veidā jums ir blah.tar.gz.
Jūs nolemjat palaist:
gunzip blah.tar.gzTas būs
- LASĪT 1GB saspiestu datu saturu blah.tar.gz.
- PROCESS saspiestos datus, izmantojot atmiņā esošo gzip dekompresoru.
- Tā kā atmiņas buferis aizpilda ar "bloku" vērtu datu, RAKSTIET nesadalītos datus failā fileblah.tar uz diska un atkārtojiet, līdz visi saspiestie dati tiek lasīti.
- Atsaistīt( dzēst) failu blah.tar.gz.
Tagad jums ir blah.tar diskā, kas ir nesaspiests, bet tajā ir viens vai vairāki faili ar ļoti zemu datu struktūras pieskaitāmās izmaksas. Faila lielums, iespējams, ir pāris baitu lielāks nekā visu failu datu summa.
Jūs palaidāt:
tar xvf blah.tarTas būs
- LASĪT 2GB nesaspiesta datu saturu blah.tar un darvas formāta datu struktūrās, ieskaitot informāciju par failu atļaujām, failu nosaukumiem, direktorijām utt.
- WRITE uz diska2GB datu plus metadati. 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ējais datu apjoms, ko mēs LASĪT no diska šajā procesā, bija 1 GB( gunzip) + 2 GB( taram) = 3 GB.
Kopējie dati, ko mēs WROTE šajā procesā cieta diskā, bija 2 GB( par gunzip) + 2 GB( darvai) + daži baiti metadatos = apmēram 4 GB.
veids 2
Jums ir blah.tar.gz, vienā vai otrā veidā.
Jūs nolemjat palaist:
tar xvzf blah.tar.gzTas
- LAI IZMAKSU 1GB spiedto datu saturu blah.tar.gz laikā, kas ir bloks atmiņā.
- PROCESS saspiestos datus, izmantojot atmiņā esošo gzip dekompresoru.
- Kad atmiņas buferis aizpildīsies, caurule attieksies uz datiem atmiņā, līdz pat darfformāta parsētājs, kas lasa informāciju par metadatus utt. Un nesaspiestajiem faila datiem.
- Tā kā atmiņas buferis aizpilda darvas faila parsētājs, tas ierakstīs nesaspiestos datus uz diska, izveidojot failus un direktorijus un aizpildot tos ar nesaspiestu saturu.
Kopējie dati, ko mēs LASĪT no diska šajā procesā bija 1GB datu saspiesta perioda.
Kopējie dati, ko mēs WROTE uz diska šajā procesā bija 2GB nesaspiesti dati + daži baiti metadatiem = aptuveni 2GB.
Ja pamanāt, diska I / O daudzums Way 2 ir vienāds ar diska I / O, ko izpilda, teiksim, Zip vai 7-Zip programmas, pielāgojot jebkādām kompresijas pakāpes atšķirībām.
Un ja saspiešanas koeficients ir jūsu rūpes, izmantojiet Xz kompresoru, lai iekļautu darvu, un jums ir LZMA2'ed TAR arhīvs, kas ir tikpat efektīvs kā vismodernākais algoritms, kas pieejams 7-Zip: -)
2. daļa: iezīmes
tar atradnes UNIX atļaujas savā faila metadatos, un tas ir ļoti labi zināms un pārbaudīts, lai veiksmīgi iepakotu direktoriju ar visu veidu dažādām atļaujām, simboliskajām saitēm utt. Pastāv vairāk nekā daži gadījumi, kad var būt nepieciešams aizsargāt virkni failuvienā failā vai straumē, bet tas ne vienmēr ir saspiests( lai gan kompresija ir noderīga un bieži tiek izmantota).
3.daļa: Saderī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 piekļuve. zip vai. rardekompresori, lielākā daļa Linux instalāciju, pat visvienkāršākā, varēs piekļūt vismaz taram un gunzipam 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 ir mūsdienu izplatīšana, ļ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. zz, kas ir līdzīgsuz Zip vai Rar failu formātiem, jo tas gan saspiež, gan 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 kas jāpievieno paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem?Šeit skatiet pilnu diskusiju pavedienu.