gzip produit des fichiers avec une extension .gz. gunzip peut décompresser des fichiers créés par gzip, compress ou pack. La détection du format d'entrée est automatique.
Le format des fichiers .gz générés par gzip est décrit
dans les RFCs (Request For Comments)
1951
et 1952. Des informations supplémentaires sur le format gzip
sont disponibles ici.
Une brève description des algorithmes de compression et
de décompression utilisés par
gzip est donnée ici.
Une introduction plus informelle écrite par Antaeus Feldspar est
ici (en anglais).
Si vous avez une question à propos de gzip, cherchez d'abord la réponse dans cette page. Si vous ne la trouvez pas, écrivez à support@gzip.org . Donnez des informations aussi détaillées que possible, au minimum le nom de votre système d'exploitation (Windows XP, Linux...), la commande exacte que vous avez tapé et les messages d'erreurs exacts que vous avez obtenus. Si vous dites seulement "gzip ne marche pas" je ne peux pas vous aider.
Pour extraire des fichiers .tar ou
.tar.gz avec Windows 9x/NT/2000/ME/XP, utilisez
7-zip (gratuit) ou
PowerArchiver (commercial) ou
Winzip (commercial).
Pour tar avec
MSDOS ou d'autres systèmes, consultez la liste
FAQ du groupe comp.compression
Pour extraire gzip-1.2.4.tar et compiler les sources sur un système Unix, tapez:
tar xvf gzip-1.2.4.tar
cd gzip-1.2.4
./configure
make
Sur plusieurs systèmes, des erreurs du compilateur causent des
erreurs dans gzip, en particulier avec les options d'optimisation.
Voir la section "Special targets" à la fin du fichier INSTALL pour la
liste des problèmes connus. Pour toutes les machines, utilisez
make check pour vérifier que gzip a été compilé correctement.
Essayez sans aucune optimisation si vous avez un problème.
Le manuel utilisateur de gzip est disponible (en anglais) ici.
Des exécutables pour different systèmes sont disponibles ici:
Pour Linux ou BeOS, gzip est déjà sur votre système.
Pour extraire des fichiers tar.Z sur Unix:
zcat fichier.tar.Z | tar xvf -
tar.gz ou .tgz?utimbuf99.9% des problèmes avec gzip sont dus à un transfert de fichier effectué en mode ASCII au lieu du mode BINARY. En particulier, gopher est connu pour corrompre des fichiers binaires en les considérants comme ASCII. Verifiez que votre copie locale du fichier a exactement la même taille que l'original.
Si vous avez transféré un fichier en mode ASCII et vous n'avez plus
accès à l'original, vous pouvez essayer le programme
fixgz pour enlever le surplus de caractères CR
(carriage return) insérés par le transfert.
Un exécutable pour Windows 9x/NT/2000/ME/XP est ici.
Mais il n'y a absoluement
aucune garantie que ceci va corriger le fichier endommagé. Conclusion:
ne transférez jamais un fichier binaire en mode ASCII. Pour compiler
fixgz et l'éxécuter, faites:
cc -o fixgz fixgz.c fixgz mauvais.gz corrige.gz gzip -tv corrige.gz
C'est le même problème que ci-dessus: un transfert fait en mode non binaire a corrompu l'entête du fichier, et induit gunzip à émettre un message d'erreur incorrect. Transférez le fichier de nouveau, mais en mode binaire.
La distribution de gzip pour MSDOS contient un fichier README.DOS, lisez-le. En bref:
copy gzip.exe gunzip.exe
Utilisez plutôt la librairie de compression zlib.
tar.gz ou .tgz?tar.gz ou .tgz sont
des fichiers tar compressés avec gzip. Sur un
système Unix on peut les extraire avec:
gunzip < fichier.tar.gz | tar xvf -
gunzip < fichier.tgz | tar xvf -
Si vous avez
GNU tar
vous pouvez utiliser l'option z directement:
gtar xvzf fichier.tar.gz
gtar xvzf fichier.tgz
tar.gz, gzip émet quelquefois un message
d'erreur Broken pipe. Ceci peut être ignoré sans problème
si tar a extrait tous les fichiers sans autre message d'erreur.
L'origine de ce message est que tar s'arrête de lire
à la fin logique du fichier tar qui ne coïncide pas toujours
avec la fin physique du fichier. gzip ne peut donc plus écrire
le reste du fichier tar dans le pipe qui a été fermé.
Ce problème n'arrive qu'avec certains shells, principalement
bash. Ces shells transmettent le signal SIGPIPE à
l'utilisateur, mais la plupart des autres (tels que tcsh)
ignorent le signal silencieusement.
Vous pouvez facilement reproduire le même message d'erreur avec des programmes autres que gzip et tar, par exemple:
cat /dev/zero | dd bs=1 count=1
tar.gz sont complétés avec des zéros
à la fin pour qu'ils aient une taille multiple d'une certaine taille
de block. Ceci arrive en particulier quand le fichier tar
est sur une bande magnétique. Quand de tels fichiers sont extraits
avec une commande telle que
gunzip < fichier.tar.gz | tar xvf -
gtar xvzf /dev/rmt/0
gunzip décompresse correctement le fichier tar.gz,
puis essaie de décompresser le reste des données qui n'est constitué que
de zéros. Puisque ces zéros ne sont pas au format gzip,
gzip les ignore. La commande d'extraction tar
fonctionne correctement néanmoins, puisque gzip a envoyé dans
le pipe toutes les données dont tar a besoin.
Vous pouvez éviter ce message innofensif en utilisant l'option
-q de gzip, comme ceci:
gunzip -q < fichier.tar.gz | tar xvf -
GZIP=-q gtar xvzf /dev/rmt/0 # pour bash, ksh, sh ...
(setenv GZIP -q; gtar xvzf /dev/rmt/0) # pour csh, tcsh, ...
pour GNU tar: tar tvfz fichier.tar.gz
pour tout tar: gunzip < fichier.tar.gz | tar tvf -
Si vous transférez le fichier tar.gz sur une autre machine, testez
le fichier de destination après le transfert, pas le fichier
d'origine. Ceci mettra en évidence les mauvais transferts. Si vous
n'utilisez pas tar, faites au moins gzip -tv fichier.gz
pour tester les fichiers importants.
Une fois le fichier endommagé, il est très difficile sinon impossible
de le récupérer. Si vos données sont si importantes que vous soyez
prêt à passer beaucoup de temps pour en récupérer une partie, lisez
ceci (en anglais, désolé).
Les fichiers déjà compressés sans le patch sont corrects; le patch n'est utile que pour la décompression. La décompression avec zcat produit les données correctes, plus un message d'erreur length error que vous pouvez ignorer pour un seul fichier. Par exemple vous pouvez décompresser sans le patch avec:
gunzip < fichier.gz > fichier
zcat sur plusieurs fichiers s'arrêtera à la première erreur,
donc utilisez le patch pour éviter tout problème.
Pour obtenir un binaire corrigé, copiez le fichier 4g-patch.tar dans le répertoire contenant les sources de gzip, puis faites:
tar xvf 4g-patch.tar
make
Pour certains systèmes (Solaris 2.6, AIX), vous pouvez avoir le message
d'erreur
"Value too large for defined data type". Une version complète
corrigeant ce problème est disponible
ici,
grâce à Paul Eggert. Pour AIX, ajoutez
"-D_POSIX_SOURCE -D_LARGE_FILES -D_LARGE_FILE_API" aux options de
compilation.
J'ai probablement passé plus de temps à étudier les brevets
qu'à réellement coder des algorithmes de compression. Je maintiens
une liste de plusieurs centaines de brevets sur des algorithmes
de compression sans perte, et j'ai fait en sorte que gzip
ne soit couvert par aucun de ceux ci. En particulier, l'option
--fast de gzip n'est pas aussi rapide qu'il
serait possible, précisement pour éviter une technique déjà brevetée.
La première version de l'algorithme de compression utilisé par gzip est apparue dans zip 0.9, rendu public le 11 Juillet 1991. Donc tout brevet obtenu après le 11 Juillet 1992 ne peut pas menacer gzip pour cause de publication antérieure, et j'ai vérifié tous les brevets obtenus avant cette date.
Pendant ma recherche, j'ai trouvé deux brevets intéressants sur une opération mathématiquement impossible: la compression de données aléatoires. Ceci est à peu près équivalent aux brevets sur les machines à mouvement perpétuel. Jetez un oeil ici (en anglais) pour voir une courte analyse de ces deux brevets.
gzip gère correctement les dates de l'an 2000 et au delà. Des informations supplémentaires sur les logiciels GNU et l'an 2000 se trouvent ici.
utimbuf
make CFLAGS="-UHAVE_UNISTD_H"
Si du cryptage faible vous suffit, vous pouvez utiliser zip.
tar puis
le compresser:
pour GNU tar: gtar cvzf fichier.tar.gz fichiers
pour tout tar: tar cvf - fichiers | gzip > fichier.tar.gz
Vous pouvez aussi utiliser
zip (gratuit),
7-zip (gratuit),
PowerArchiver (commercial)
ou Winzip (commercial).
Le format zip
permet un accès direct à chaque fichier dans l'archive, mais le format
tar.gz donne généralement un meilleur taux de compression.
La page de l'auteur de gzip,
Jean-loup Gailly
La page du co-auteur
Mark Adler
La librairie
également
écrite par Jean-loup et Mark.
Tout ceci a commencé avec le projet
FAQ (Foire Aux Questions) du groupe de news
comp.compression.
Merci beaucoup à
pour le support du domaine gzip.org
et pour son excellent service.
Merci à Greg Roelofs
pour le logo gzip.
La page d'accueil de gzip en français est http://www.gzip.org/index-f.html
Dernière modification: 27 juillet 2003.
Envoyez vos commentaires à
jloup@gzip.org .
La clé PGP de Jean-loup Gailly est ici.