Qual è la differenza con tutti i diversi tipi di archivi .tar?


16

Qualcuno potrebbe dirmi cosa succede con così tanti archivi e in che modo differiscono?

Ci sono almeno cinque che mi viene in mente, .tar.tz, .tar.gz, .tar.bz2, .tar.lz,.tar.z

Qual è la migliore per quali applicazioni? Sembra sciocco fare così tante variazioni dello stesso file, ma sono sicuro che ci sia una ragione.

Risposte:


18

Il .gz, .xz, .bz2, .7z, .lz, .zsuffissi sono utilizzati per mettere in chiaro che il file è compresso con detto algoritmo di compressione. Il suo utilizzo non è limitato ai .tarfile, vedrai anche file come initrd.gz(un ramdisk iniziale compresso) o manual.txt.gz(per un documento di testo compresso). Puoi anche vedere file.tgzquale è anche un tarball compresso con gzip (come file.tar.gz).

L'estensione del file è una convenzione, non descrive necessariamente il contenuto del file. Per verificare il tipo di file che stai gestendo, usa il filecomando Esempio:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)

Nella mia esperienza, i file compressi con gzip ( .gz) sono i più comuni. È veloce nel comprimere e decomprimere, anche se ci sono altri algoritmi che producono rapporti di compressione migliori.


8

Oltre alla risposta @Lekensteyn, vorrei aggiungere che questo comportamento si basa su Fai una cosa e fallo bene filosofia - il tarprogramma sa come mettere più file in un singolo flusso (con .tarestensione), gzipsa come comprimere un file singolo (aggiunta .gzestensione) *. Combinando questi strumenti è possibile creare un comando che comprime più file in un singolo .tag.gzfile.

Questo approccio è molto flessibile: puoi combinare alcuni comandi Unix standard per fare ogni sorta di cose. Ad esempio, se si scrive un programma migliore per comprimere i file, non è necessario modificarlo tarper consentirgli di creare i .tar.mymegazipfile, al contrario, è sufficiente tarinviare l'output del pipe al compressore.

Allo stesso modo, tarnon sa nulla di SSH, ma combinando i comandi è possibile creare uno script che archivia i file, li carica su un computer remoto tramite SSH e li annulla.

Confronta questo con il zipcomando, che non ha avuto origine in Unix: ha strumenti integrati per comprimere intere directory, crittografare i file, dividere l'archivio in file zip più piccoli ecc.


(nota a piè di pagina) - sì, tarè in grado di gzip o bzip stesso usando -ze -jcambia, sono stati aggiunti per comodità e il tar GNU sta effettivamente generando gzipo bzip2come un nuovo processo.


Esempio: i comandi tar c dir/ | gzip > dir.tar.gze i tar czf dir.tar.gz dir/comandi fanno la stessa cosa. Un esempio in cui tarsi combina con SSH e tar(nuovo): tar cz Documents/ | ssh user@host 'tar xz(equivalente rsync sarebbe: rsync -a Documents user@host:)
Lekensteyn
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.