Documentation non-officielle des utilitaires d'archivage et de compression
tar, gzip et gunzip

Auteur :   Fred Pesch  peschans@ie2.u-psud.fr

Sommaire :

1. Introduction
2. Utilisation de gzip / gunzip
3. Utilisation de tar
4. Exemple pratique
 
1. Introduction
  La logitheque UNIX est surement la plus fournie de tous les systemes confondus, surtout en ce qui concerne les freewares. Le gros probleme provient surtout de la difficulte d'installer les logiciels en general fournis sous forme de fichiers tares (mais loin d'etre fous) et zipes avec les outils tar, gzip et son copain gunzip. Ce petit guide va, je l'espere, vous aider a comprendre a quoi ils servent et comment ils s'utilisent. Vous pourrez alors tarer comme un tare et mitrailler a mort avec gunzip (ca fait un peu nom d'arme militaire, non ?). Bien sur, vous ne trouverez pas ici une reference avec le detail de tous les parametres des commandes, mais vous en
connaitrez les principales. N'oubliez pas que toutes les commandes UNIX sont "case sensitive" (les majuscules et minuscules sont interpretees differemment, ainsi, les fichier tar et TaR sont diferents et peuvent coexister) mais que les commandes sont en general tapees en minuscules (donc, faites gaffe au Caps Lock).

2. Utilisation de gzip / gunzip
     L'utilitaire gzip vous permet de reduire la taille de tout type de fichier en utilisant le celebre algorithme de Lempel-Ziv (LZ77 pour les connaisseurs). Ce n'est pas l'algorithme de compression le plus efficace mais il a l'avantage d'etre performant pour la plupart des types de fichiers (images, textes, sons, etc.) (pour les
connaisseurs, encore, il est repute plus performant que LZW et toutes les variantes d'Huffmann). Il a une autre
propriete remarquable : en compressant un fichier deja compresse, la taille diminue et ainsi de suite jusqu'a atteindre 0 octet ! MAIS NON ! C'etait une blague pour voir si vous saviez de quoi on parle ici :-).
     Pour compresser un fichier, le plus simple est de taper tout simplement la commande :

                  gzip nomdufichier
 
et gzip transformera automatiquement le fichier nomdufichier en nomdufichier.gz (sur UNIX) qui sera sa version compressee. Bien sur, vous venez d'ecraser l'ancien fichier, mais pour le recuperer, tapez donc :

                  gunzip nomdufichier.gz
 
et vous retrouverez votre nomdufichier (tout court). Il n'y a pas plus simple ! (ah si ! J'ai trouve plus simple, configurer windows95 : PleaseRunInDosMode=ON )

     Pour ne pas ecraser le fichier que l'on veut comprimer, on utilisera l'option -c qui redirige la creation du fichier compresse sur la sortie standard, il faut donc rediriger cette sortie pour que ce soit utile. Par exemple, supposons que nous voulons compresser le fichier izard.grand mais garder ce fichier et mettre la version compressee dans le fichier izard.petit.gz (rajoutez toujours le suffixe, comme ca, on sait de quoi on parle ), on utilisera :

                  gzip -c izard.grand > izard.petit.gz

Pour recuperer une version decompressee de izar.petit.gz, on pourra faire :

                  gunzip izard.petit.gz
 
ou
 
         gunzip -c izard.petit.gz > izard.petit
 
En effet, gunzip marche pratiquement comme gzip (en fait, c'est juste un gzip -d qui est l'option de decompression).

Pour compresser plusieur fichiers simultanement, le mieux est de passer par l'utilitaire tar (voir plus loin) car gzip -c accepte bien plusieurs fichiers en entrees mais le resultat d'un gunzip etant un fichier unique, on
ne peut pas se contenter de ces outils pour faire des archives.

L'option -l donne des informations sur le (ou les) fichier(s) zipe(s) passe en argument

L'option -t teste l'integrite de l'archive

Pour terminer, sachez que l'option -h vous affichera un resume des options et n'hesitez pas a faire un man gzip, c'est bien explique.

3. Utilisation de tar
l'utilitaire tar est beaucoup plus puissant et beaucoup plus riche que gzip/gunzip mais il ne sert pas du tout a la meme chose (tant mieux !). Il a aussi la facheuse tendance a etre plus complique que les utilitaires non
interactifs que l'on trouve par centaines sur unix, avec une syntaxe un peu speciale et un man incomprehensible. Mais les commandes de bases sont assez simples, ne vous inquietez pas ! le mot tar est l'abreviation de Tape ARchiver, createur d'archives pour bandes (ca s'est de la traduction !).
Nous n'allons pas detailler les douze milles fonctions que peut remplir cet archiveur mais trois fonctions essentielles :
  a. creer une archive
  b. desarchiver un fichier tare
  c. afficher le contenu d'une archive
 
a. creer une archive
En general, pour creer une archive, on donne soit un ensemble de fichiers, soit un ou des repertoires ou tous les fichiers contenus (et tous les sous-repertoires recursivement) feront aussi parti de l'archive. La
commande de base est :

  tar cvf fichier.tar fichier1 [fichier2 fichier3 ... fichierN]
               repertoire1 [repertoire2 ... repertoireN]
 
Le c indique que l'on veut creer (create) l'archive, le v indique de rajouter le proprietaire et les droits d'acces des fichiers (attention ! c'est pratique mais ca peut etre problematique sauf si vous avez un acces root et alors, pas de probleme). Le f enfin indique qu'il faut preciser la sortie de l'archive (sinon, tar utilise un peripherique d'archivage par defaut qui peut etre une disquette !).

Supposons que vous vouliez archiver (pas de compression, attention !) les fichiers toto1, toto2, ainsi que le repertoire velo et tous ses sous-repertoires et fichiers et tout dans le fichier d'archive steaktar.tar
(sic!), vous saisierez :

  tar cvf steacktar.tar toto1 toto2 velo
 
Un point c'est tout ! Vous aurez un nouveau fichier steacktar.tar pret pour le zipage et le transbordage, le dezipage et le detarage... Mais avant de detarer, signalons que tar a enregistrer les fichier avec leurs paths relatifs, c'est a dire que si j'avais le fichier tricycle dans le sous-repertoire enfant de velo, il aurait ete enregistre comme velo/enfant/tricycle. C'est fort pratique mais on veut parfois enregistrer les fichiers avec leur path absolu il suffit d'indiquer les noms en partant de la racine, c'est un peu fastidieux mais en general on archive un seul
repertoire.

b. detarage
    Pour detarer un fichier d'archive, on utilise la commande :
 
    tar xvf nomarchive.tar

Les fichiers et les repertoires tares sont crees (attention, cela peut  effacer les anciens...) et vous pouvez maintenant effacer votre archive (avec rm, forcement !). Un petit exemple, quand meme : si vous avez archive
un gros programme dans OlivierEstUne.tar , vous ferez :

    tar xvf OlivierEstUne.tar
 
et hop !

c. Affichage
La derniere commande qui nous sera utile est l'affichage du contenu d'une archive, vous ferez alors :

    tar tvf nomarchive.tar
    ou
    tar tvf nomarchive.tar | less  (ou more)
 
La deuxieme commande permet d'afficher les informations pages par pages.

4. Exemple Pratique
   Supposons que vous avez recupere le fichier doom3.tar.gz et que vous etes tres impatient de jouer, mais vous ne savez pas comment faire... Premiere chose, le suffixe .gz vous informe que le fichier est zipe, vous devez donc dezipe le fichier avec un simple :

            gunzip doom3.tar.gz
 
Vous obtiendrez le fichier doom3.tar et vous n'aurez plus qu'a le detarer avec un simple :
 
       tar xvf doom3.tar
 
Et voila, vous avez atteint le niveau de connaissance pour installer la plupart des logiciels UNIX disponibles sur internet ou sur CDROM, sauf ceux qui demandent une recompilation mais c'est une autre histoire...

NOTE COMPLEMENTAIRE :
Si vous voules faire transiter vos fichier .tar.gz par le dos(il est remonte dans mon estime avec les dos extenders, celui-la), renommez les en 8lettres.tgz, ca vous evitera les mauvaises surprises genre:
"c'est quoi ~Em~-1.gz ?"

 (C) Fred Pesch, 1995
    tout droit de repollution reserve