Tar effettivamente comprime i file o li raggruppa semplicemente?


37

Di solito supponevo che tarfosse un'utilità di compressione, ma non sono sicuro, in realtà comprime i file o è proprio come un file ISO, un file per contenere i file?


Anche su SuperUser .
allquixotic,

Risposte:


49

Tar è uno strumento di archiviazione (Tape ARchive), raccoglie solo i file e i loro metadati insieme e produce un solo file. Se vuoi comprimere quel file in un secondo momento puoi usare gzip / bzip2 / xz. Per comodità, tar fornisce argomenti per comprimere automaticamente l'archivio. Controlla la pagina man tar per maggiori dettagli.


9
Un leggero chiarimento sulla risposta. È Tar GNU che fornisce quegli argomenti di compressione extra. Ad esempio, Solaris tar non fornisce argomenti per la compressione.
Tero Kilkanen,

5
oooh, ecco perché continuo a vederething.tar.7z
Mooing Duck il

Il tar BSD fornisce anche un argomento per la compressione, sebbene accetti ze determini solo il metodo di compressione basato sull'estensione, mentre il tar GNU ha zZjJargomenti separati per i diversi metodi di compressione.
wingedsubmariner

2
Basta leggere la manpage di tar di BSD, e risulta che mi sbagliavo, che tar di BSD usa separato zZjJper la compressione proprio come il tar GNU. Tuttavia, rileva automaticamente la compressione durante la decompressione, mentre GN Tar si aspetta zZjJanche allora.
wingedsubmariner

5
@wingedsubmariner: no; le versioni moderne di GNU si tardecomprimono automaticamente senza richiedere le -zZjJopzioni.
Jonathan Leffler,

17

tarproduce archivi; la compressione è una funzionalità separata. Tuttavia, da tar solo può ridurre l'utilizzo dello spazio se utilizzato su un numero elevato di file di dimensioni inferiori alle dimensioni del cluster del file system. Se un filesystem utilizza cluster da 1kb, anche un file che contiene un singolo byte consumerà 1kb (più un inode). Un tararchivio non ha questo sovraccarico.

A proposito, un file ISO non è in realtà "un file per contenere i file" - è in realtà un'immagine di un intero file system (uno originariamente progettato per essere utilizzato su CD) e quindi la sua struttura è notevolmente più complessa.


3
In realtà un file vuoto non consumerà 1kb. Sarà un file 1-1023 byte.
psusi

@psusi quindi per un file di byte 1-1023 consumerà sempre 1024 che si traduce in uno spreco di 1023-1 byte.
Shiplu Mokaddim

2

Il comando tar UNIX originale non ha compresso gli archivi. Come menzionato in un commento, il catrame di Solaris non si comprime. Né HP-UX, né AIX, FWIW. Per convenzione, gli archivi non compressi finiscono .tar.

Con GNU / Linux ottieni tar GNU. (È possibile installare tar GNU su altri sistemi UNIX.) Di default non si comprime; tuttavia, non comprimere l'archivio creato con gzip (anche da GNU) se si fornisce -z. Il suffisso convenzionale per i file gzip è .gz, quindi vedrai spesso tarball (gergo per un archivio tar, che di solito implica che è stato compresso) che finiscono .tar.gz. Quel finale implica che è stato eseguito tar, seguito da gzip, ad es tar cf - .|gzip -9v > archive.tar.gz. Troverai anche archivi che finiscono .tgz, ad es tar czf archive.tgz ..

Modifica: www.linfo.org/tar.html mi ha ricordato che GNU tar supporta molte più funzionalità rispetto alla semplice compressione con gzip e mi ha ricordato che i suffissi sono più che semplici convenzioni. Hanno una semantica integrata. Supporta anche bzip2 ( -jfor .bz2) e vecchio compress ( -Zfor .Z). Poi ho guardato la pagina man e mi è stato ricordato che -amappa automaticamente il metodo di compressione desiderato in base al suffisso.

Un altro nit. Come dice la pagina man tar di Linux, GNU produce pagine informative, non pagine man, quindi per imparare tutto su GNU tar, esegui info tar.


Il tar GNU non gestisce ancora le compressioni da solo, si collega solo a / da gzip, bzip2, compress e altri.
ott--

Ho dato un'occhiata alla fonte . Tar GNU gestisce la compressione! L'implementazione sfrutta il riutilizzo del codice e il rispetto dei principi architetturali dello spazio utente UNIX. "Solo tubi" sta sottostimando il modo in cui la compressione è strettamente integrata nello strumento. Il fatto che accada ai programmi di fork fork è un tecnicismo. Se vuoi difendere "solo pipe", cita nomi di file e numeri di riga e vediamo da che parte prende la community.
martedì

Ci vogliono alcuni giorni prima che io possa controllare quella fonte.
ott--

1

L'utilità tar non viene compressa fino a quando non si fornisce l'argomento per farlo [nome file tar -z].

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.