Jeg antok vanligvis at tar
var et komprimeringsverktøy, men jeg er usikker på, komprimerer det faktisk filer, eller er det akkurat som en ISO-fil, en fil for å holde filer?
Kommentarer
- Også på SuperUser .
Svar
Tar er et arkiveringsverktøy (Tape ARchive), det samler bare filer og deres metadata sammen og produserer en fil. Hvis du vil komprimere den filen senere, kan du bruke gzip / bzip2 / xz. For enkelhets skyld gir tar argumenter for å komprimere arkivet automatisk for deg. Sjekk tar man page for mer informasjon.
Kommentarer
- En liten avklaring på svaret. Det er GNU-tjære som gir disse ekstra komprimeringsargumentene. Solaris tar gir for eksempel ikke argumenter for komprimering.
- oooh, at ' hvorfor jeg stadig ser
thing.tar.7z
- BSD-tjære gir også et argument for komprimering, selv om det bare godtar
z
og bestemmer komprimeringsmetoden basert på utvidelsen, mens GNU-tjære har separatzZjJ
argumenter for de forskjellige komprimeringsmetodene. - Bare les BSD-tar-manpage, og det viser seg at jeg tok feil, BSD-tar bruker separat
zZjJ
for komprimering akkurat som GNU-tjære. Imidlertid oppdager den automatisk komprimering når dekomprimering skjer, mens GNU tar forventerzZjJ
da også. - @wingedsubmariner: nei; moderne versjoner av GNU
tar
dekomprimerer automatisk uten å kreve-zZjJ
-alternativene.
Svar
tar
produserer arkiver; komprimering er en egen funksjonalitet. Imidlertid tar
alene kan redusere plassforbruket når det brukes på et stort antall små filer som er mindre enn filsystemets klyngestørrelse. Hvis et filsystem bruker 1 kb klynger, til og med en fil som inneholder en enkelt byte, bruker 1 kb (pluss en inode). Et tar
-arkiv har ikke dette overhead.
BTW, en ISO filen er egentlig ikke «en fil for å holde filer» – den er faktisk et bilde av et helt filsystem (et opprinnelig designet for å brukes på CD-er) og dermed er strukturen betydelig mer kompleks.
Kommentarer
- En tom fil bruker faktisk ikke 1kb. En 1-1023 bytefil vil.
- @psusi, så for en fil med byte 1-1023 vil alltid forbruke 1024, noe som resulterer i svinn på 1023-1 byte.
Svar
Den opprinnelige UNIX-tar-kommandoen komprimerte ikke arkiv. Som nevnt i en kommentar komprimerer Solaris tar ikke. HP-UX, heller ikke AIX, FWIW. Etter konvensjon ender ikke komprimerte arkiver med .tar
.
Med GNU / Linux får du GNU-tjære. (Du kan installere GNU-tjære på andre UNIX-systemer.) Som standard komprimerer den ikke, men den komprimerer imidlertid det resulterende arkivet med gzip (også ved GNU) hvis du leverer -z
. Det konvensjonelle suffikset for gzipped filer er .gz
, så du vil ofte se tarballs (slang for en tjære arkiv, som vanligvis antyder at det er komprimert) som ender på .tar.gz
. Denne avslutningen innebærer at tjære ble kjørt, etterfulgt av gzip, f.eks. tar cf - .|gzip -9v > archive.tar.gz
. Du vil også finne arkiver som slutter på .tgz
, f.eks. tar czf archive.tgz .
.
Rediger: www.linfo.org/tar.html minnet meg om at GNU tar støtter mye mer funksjonalitet enn bare å komprimere med gzip, og det minnet meg om at suffiksen er mer enn vanlige konvensjoner. De har innebygd semantikk. Den støtter også bzip2 (-j
for .bz2
) og gammel komprimering (-Z
for .Z
). Så så jeg på mannssiden og ble påminnet om at -a
automatisk kartlegger ønsket kompresjonsmetode basert på suffiks.
Én annen nit. Som Linux tar man-siden sier, GNU produserer informasjonssider, ikke man-sider, så for å lære alt om GNU tar, kjør info tar
.
Kommentarer
- GNU-tjæren håndterer fortsatt ikke ' t komprimeringer av seg selv, den bare rør til / fra gzip, bzip2, komprimering og andre.
- Jeg så på kilden . GNU tjære håndterer kompresjon! Implementeringen drar nytte av gjenbruk av koder og sunne UNIX-brukerrom arkitektoniske prinsipper. " Bare rør " understreker måten komprimering er tett integrert i verktøyet.Det faktum at det skjer med gaffelhjelperprogrammer er en teknisk. Hvis du vil forsvare " bare rør, ", siter du filnavn og linjenumre og lar ' ser hvilken side samfunnet tar.
- Det tar noen dager før jeg kan sjekke den kilden.
Svar
tar-verktøyet komprimerer ikke før du gir argument for å gjøre det [tar -z filnavn].