Sous Linux / Unix, est-ce que .tar.gz versus .zip est important?

69

Les programmes multiplates-formes sont parfois distribués sous la forme .tar.gz pour la version Unix et .zip pour la version Windows. Cela a du sens lorsque le contenu de chacun doit être différent.

Si, toutefois, le contenu devait être identique, il serait plus simple de ne faire qu'un téléchargement. Windows préfère le format .zip car c'est le format qu'il peut gérer immédiatement. Est-ce important sur Unix? C'est-à-dire que j'ai essayé aujourd'hui de décompresser un fichier sous Ubuntu Linux, et cela a bien fonctionné; Y at-il un problème avec tout système d’exploitation actuel de type Unix, ou est-il acceptable de simplement fournir un fichier .zip dans tous les domaines?

muraille
la source

Réponses:

28

Nécromancie.
Oui c'est important.
En fait, ça dépend.

tar.gz

  • Stocke les attributs de fichier unix : uid, gid, autorisations (notamment exécutables). La valeur par défaut peut dépendre de votre distribution et peut être modifiée avec des options.
  • Consolidation de tous les fichiers à archiver en un seul fichier ("Archivage sur bande").
  • La compression réelle est effectuée par GZIP, sur le fichier .tar

Zip *: français

  • Stocke les attributs MSDOS . (Archive, Readonly, Hidden, System)
  • Compresse chaque fichier individuellement, puis consolide les fichiers compressés individuellement dans un fichier
  • Inclut une table de fichiers à la fin du fichier

Étant donné que zip compresse les fichiers individuellement, une archive zip aura probablement une taille plus grande (en particulier avec de nombreux fichiers plus petits - pensez aux fichiers de configuration).

Ainsi, à part la taille du fichier, si vous compressez plusieurs fichiers sous Linux / Unix, puis décompressez-les, les attributs de fichier disparaîtront (à tout le moins, ceux qui ne sont pas pris en charge par MS-DOS. logiciel que vous utilisez). Cela peut avoir de l'importance ou non, auquel cas ce n'est pas grave (car la différence de taille de fichier est dans la plupart des cas négligeable).

Dilemme
la source
10
la distribution standard de zip sur les systèmes de type Unix (info-zip) stocke également les attributs de fichier Unix.
Erik Aronesty le
35

tar gz est préférable pour Linux / Unix car il conserve les autorisations, telles que "exécutable" sur les scripts.

Zam
la source
8
Les utilitaires d'archivage et zip / unzip de OS X préservent les autorisations, mais d'autres utilitaires peuvent ne pas le faire.
Lri
4
Les outils zip / décompression standard (info-zip) conservent les autorisations sur Linux et les horodatages sur Windows. voir: en.wikipedia.org/wiki/Info-ZIP pour des fonctionnalités typiques ... qui résout les problèmes d'autorisations et les limitations de taille de fichier tout en conservant un accès aléatoire souhaitable et des propriétés d'archive modifiables.
Erik Aronesty le
33

La plupart des distributions Linux les plus populaires de nos jours sont par défaut équipées de zipcompatibilité. Mais comme indiqué par nc3b, taret gzipsont plus communs sur les systèmes Linux / Unix. Si vous avez besoin d'une compatibilité de 95% sur ces systèmes, envisagez d'utiliser taret gzip. Si vous avez besoin de seulement 85%, tout zipira bien.

BloodPhilia
la source
2
Ok, 95% est meilleur que 85% :-) Une question très mineure, est-ce important que l'extension de fichier soit .tgz au lieu de .tar.gz?
rwallace
8
L'extension importe peu, elle est simplement utilisée comme référence par les utilisateurs et les programmes. Si l'extension est .XXX et que vous savez qu'il s'agit de .tar, vous pouvez toujours utiliser tar pour la désarchiver. .tgz et .tar.gz sont en fait les mêmes extensions et les fichiers avec ces extensions seraient similaires.
BloodPhilia
2
D'autre part, pour une compatibilité à 100% sous Windows, vous devez utiliser cab.
kinokijuf
3
tar stockera les uid, gid et permissions, tels que + x sur les systèmes Unix. zip stocke les archives, en lecture seule, caché et système sur les systèmes Windows.
Andrew De Andrade
1
@mtak vous pouvez toujours simplement utiliser gunzip --suffix .zip npm-debug.log.zipougunzip -c < npm-debug.log.zip > npm-debug.log
Iwan Aucamp le
19

tar / gzip est un format assez merdique car l'archive ne peut pas être consultée, mise à jour, vérifiée ni même ajoutée ... sans avoir à décompresser l'archive entière.

le zip est beaucoup mieux à cet égard .... vous pouvez rapidement obtenir le contenu d’un fichier zip, l’ajouter sans le recompresser, etc.

zip a des limitations de taille ... en fonction de la version de "zip" que vous utilisez ... et celles-ci peuvent poser problème. mais l'outil info-zip standard fourni avec la plupart des systèmes d'exploitation de type Linux n'a pas de limite de taille et conserve parfaitement les droits d'accès aux fichiers.

voir: https://en.wikipedia.org/wiki/Info-ZIP pour les fonctionnalités

Erik Aronesty
la source
De quel genre de limitations parlez-vous?
Pacerier
édité et fourni un lien
Erik Aronesty
9

Les installations Barebones Unix ne contiennent pas unzip (c'est-à-dire les installations du serveur), mais elles contiennent toujours tar et gzip . Si votre public est constitué de serveurs, je choisirais gzip .

Aussi, gzip a une plus grande compression que zip , donc le fichier sera plus petit.

Rwky
la source
1
Je ne dirais pas que gzip compresse mieux que ZIP. Les deux utilisent le même algorithme DEFLATE, et toutes les comparaisons que j'ai effectuées donnent des résultats similaires en termes de taille de fichier.
grawity
4
Tar.gz va compresser le fichier entier en une fois, alors que zip compresse les fichiers individuellement. Pour de nombreux petits fichiers, la première approche génère généralement des fichiers nettement plus petits, car les redondances peuvent être utilisées entre les fichiers. La différence n'est pas énorme cependant.
Sleske
3

Oui c'est important. Tar est un archiveur. Et dans tar.gz, nous compressons cette archive.

Zip est à la fois un archiveur et un compresseur.

Si vous comparez la compression, d'après mon expérience, gzip est bien meilleur que zip.

Et l'autre différence significative est mentionnée dans une autre réponse . Si vous avez une très grande archive de fichiers et souhaitez extraire un petit fichier, Zip vous permet de le faire. Mais avec tar.gz, vous devez extraire une archive entière.

Rakesh Reddy
la source
Pas une archive de fichiers gzippés mais un gzip de fichiers archivés. C'est pourquoi vous devez extraire toute l'archive.
m93a
2

La décision se résume essentiellement à celles-ci:

  • GZIP conserve les autorisations de fichiers Unix , en tant que fichiers autorisés à s'exécuter.

  • D'autre part, ZIP fonctionne hors de la boîte dans Windows.

Alberto Salvia Novella
la source
1

taret gzipsont beaucoup plus communs sur * nix-es que unzip. Par exemple, pour le moment sur mon arch-2009.08, il n'y en a pas unzip.

nc3b
la source
6
Mais il y a bsdtar(une partie de libarchive), qui gère bien ZIP.
Grawity
Oops: "> Je ne savais pas à ce sujet. Merci!
---)