Su Linux / Unix, importa .tar.gz contro .zip?


69

I programmi multipiattaforma sono talvolta distribuiti come .tar.gz per la versione Unix e .zip per la versione Windows. Questo ha senso quando il contenuto di ciascuno deve essere diverso.

Se, tuttavia, i contenuti saranno gli stessi, sarebbe più semplice avere un solo download. Windows preferisce .zip perché è il formato che può gestire immediatamente. Importa su Unix? Cioè, oggi ho provato a decomprimere un file su Ubuntu Linux, e ha funzionato bene; c'è qualche problema con questo su qualsiasi sistema operativo attuale simile a Unix, o è giusto fornire un file .zip su tutta la linea?

Risposte:


28

Necromancing.
Sì, importa.
In realtà dipende.

tar.gz

  • Memorizza gli attributi di file unix : uid, gid, permessi (in particolare eseguibile). L'impostazione predefinita può dipendere dalla tua distribuzione e può essere attivata / disattivata con le opzioni.
  • Consolida tutti i file da archiviare in un unico file ("Tape ARchive").
  • La compressione effettiva viene eseguita da GZIP, sul file .tar

cerniera lampo

  • Memorizza gli attributi MSDOS . (Archivio, di sola lettura, nascosto, sistema)
  • Comprime ogni file singolarmente, quindi consolida i file compressi individualmente in un file
  • Include una tabella dei file alla fine del file

Poiché zip comprime i file singolarmente, molto probabilmente un archivio zip avrà dimensioni maggiori (specialmente con molti file più piccoli - pensate ai file di configurazione).

Quindi vedete, a parte le dimensioni del file, se comprimete un mucchio di file su Linux / Unix e poi decomprimeteli, gli attributi del file spariranno (almeno quelli non supportati da MS-DOS - dipende da quale ZIP -software che usi). Questo può importare o no, nel qual caso non importa (perché la differenza di dimensioni del file è nella maggior parte dei casi trascurabile).


10
la distribuzione standard di zip su sistemi unix-like (info-zip) memorizza anche gli attributi di file unix.
Erik Aronesty,

35

tar gz è migliore per Linux / Unix in quanto mantiene le autorizzazioni, come "eseguibile" sugli script.


8
L'utilità di archiviazione di OS X e zip / unzip mantengono le autorizzazioni, ma potrebbero esserci altre utilità che non lo fanno.
Lri,

4
Gli strumenti zip / unzip standard (info-zip) mantengono le autorizzazioni su Linux e i timestamp su Windows. consultare: en.wikipedia.org/wiki/Info-ZIP per le funzionalità tipiche ... che risolve i problemi relativi alle autorizzazioni e le limitazioni delle dimensioni dei file mantenendo al contempo l'accesso casuale desiderabile e le proprietà modificabili dell'archivio.
Erik Aronesty,

33

Le distribuzioni Linux più popolari in questi giorni sono dotate di default di zipcompatibilità. Ma come affermato da nc3b, tare gzipsono più comuni sui sistemi Linux / Unix. Se hai bisogno del 95% di compatibilità su questi sistemi, considera l'utilizzo di tare gzip. Se hai bisogno solo dell'85%, zipandrà bene.


2
Ok, il 95% è meglio dell'85% :-) Una domanda molto piccola, importa se l'estensione del file è .tgz invece di .tar.gz?
rwallace,

8
L'estensione non ha alcuna importanza, è solo utilizzata come riferimento da utenti e programmi. Se l'estensione è .XXX e sai che è .tar, puoi comunque usare tar per decomprimerlo. .tgz e .tar.gz sono entrambi le stesse estensioni e i file con queste estensioni sarebbero simili.
BloodPhilia,

2
D'altra parte, per una compatibilità al 100% su Windows, è necessario utilizzare la cabina.
Kinokijuf,

3
tar memorizzerà uid, gid e permessi, come + x su sistemi unix. zip archivia archivi, di sola lettura, nascosti e di sistema su sistemi Windows.
Andrew De Andrade,

1
@mtak puoi sempre semplicemente usare gunzip --suffix .zip npm-debug.log.zipogunzip -c < npm-debug.log.zip > npm-debug.log
Iwan Aucamp il

19

tar / gzip è un formato piuttosto scadente poiché all'archivio non è possibile accedere, aggiornare, verificare o persino aggiungere in modo casuale senza dover decomprimere l'intero archivio.

zip è molto meglio al riguardo .... puoi ottenere rapidamente il contenuto di un file zip, accodarlo senza ricomprimere la prima parte, ecc.

zip ha alcuni limiti di dimensione ... a seconda della versione di "zip" che usi ... e questi possono essere un problema. ma lo strumento standard info-zip fornito con la maggior parte dei sistemi operativi simili a Linux non ha limiti di dimensione e conserva le autorizzazioni dei file bene.

vedi: https://en.wikipedia.org/wiki/Info-ZIP per funzionalità


Di che tipo di limitazioni stai parlando?
Pacerier,

modificato e fornito un link
Erik Aronesty

9

Le installazioni Barebone Unix non contengono decomprimere (ovvero installazioni di server), ma contengono sempre tar e gzip . Se il tuo pubblico è un server, sceglierei gzip .

Inoltre gzip ha una compressione maggiore rispetto a zip , quindi il file sarà più piccolo.


1
Non direi che gzip comprime meglio di ZIP. Entrambi usano lo stesso algoritmo DEFLATE e tutti i confronti che ho fatto danno risultati simili nella dimensione del file.
gravità

4
Bene, tar.gz comprime l'intero file in una volta sola, mentre zip comprime i file singolarmente. Per molti file di piccole dimensioni, il primo approccio di solito genera file notevolmente più piccoli, poiché è possibile utilizzare ridondanze tra i file. La differenza non è enorme però.
sleske,

3

Sì, importa. Tar è un archivista. E in tar.gz, comprimiamo quell'archivio.

Zip è sia un archiviatore che un compressore.

Se si confronta la compressione, per mia esperienza, gzip è molto meglio di zip.

E l'altra differenza significativa è menzionata in un'altra risposta . Se hai un archivio di file molto grande e vuoi estrarre un file di piccole dimensioni, Zip ti consente di farlo. Ma con tar.gz, devi estrarre l'intero archivio.


Non un archivio di file compressi con gzip ma un gzip di file archiviati. Ecco perché devi estrarre l'intero archivio.
m93a,

2

La decisione in sostanza dipende da questi:

  • GZIP mantiene le autorizzazioni dei file Unix , poiché i file possono essere eseguiti.

  • D'altra parte ZIP funziona subito con Windows.


1

tare gzipsono molto più comuni su * nix-es di unzip. Ad esempio, al momento sul mio arco-2009.08 non c'è unzip.


6
Ma c'è bsdtar(parte di libarchive), che gestisce bene ZIP.
gravità

Oops: "> Non lo sapevo. Grazie! :-)
nc3b,
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.