Archivage et compression: tar et gzip

Il est souvent utile de réunir un groupe de fichiers dans un seul fichier (c'est ce qu'on appelle l'archivage). Ceci est utilisé pour par exemple créer des sauvegardes de données ou pour la diffusion de programmes. Sous UNIX, le programme d'archivage le plus utilisé est tar. Il permet de réunir plusieurs fichiers en un seul de façon réversible (le même programme sert au dés-archivage).

Archivage

Création d'une archive

Pour créer une archive, il faut utiliser l'option --create (ou -c), et préciser le nom du fichier qui contiendra l'archive avec l'option --file=nom_du_fichier_archive.tar (ou -f nom_du_fichier_archive.tar). Par exemple, pour regrouper en une archive de nom fichiers.tar, trois fichiers de noms fichier_1, fichier_2 et fichier_3, on utilisera donc la commande:

ordi:~ > tar --create --file=fichiers.tar fichier_1 fichier_2 fichier_3 <CR>

ou, de façon plus concise :

ordi:~ > tar -cf fichiers.tar fichier_1 fichier_2 fichier_3 <CR>

Pour avoir plus d'information sur le traitement effectué par le programme, on peut utiliser l'option --verbose (ou -v):

ordi:~ > tar -cvf fichiers.tar fichier_1 fichier_2 fichier_3 <CR>

On peut également utiliser les 'wildcards': pour archiver tous les fichiers sources en C (extensions .c et .h) du répertoire courant:

ordi:~ > tar -cvf sources.tar *.c *.h <CR>

Enfin, on peut archiver une partie d'arborescence (un répertoire et tous ses sous-répertoires) en donnant le nom du répertoire:

ordi:~ > tar -cvf fichiers_rep.tar nom_du_repertoire <CR>

Ajout de fichiers à une archive

Il est possible d'ajouter des fichiers à une archive existante, avec l'option --append (ou -r) à la place de l'option --create:

ordi:~ > tar -rvf fichiers.tar fichier_4 <CR>

ajoute le fichier fichier fichier_4 à l'archive fichiers.tar

Liste du contenu d'une archive

Pour obtenir le contenu d'un fichier archive (sans le désarchiver), on utilise la commande --list (ou -t) à la place de --create:

ordi:~ > tar -tvf fichiers.tar <CR>

affiche le nom des fichiers contenu dans l'archive fichiers.tar

Désarchivage: extraire les fichiers

Pour extraire tous les fichiers contenus dans un fichier archive, on utilise l'option --extract (ou -x):

ordi:~ > tar -xvf fichiers.tar <CR>

extrait de l'archive fichiers.tar tous les fichiers contenus (avec l'arborescence s'il y en a une). Si l'on ne souhaite extraire que certains fichiers, il faut indiquer leur nom :

ordi:~ > tar -xvf fichiers.tar fichier_2 <CR>

n'extrait que le fichier fichier_2.

Compression de données

Il est souvent possible de compresser des données de sorte qu'elles occupent moins de place sur un disque. L'intérêt, selon le cas, est de pouvoir stocker davantage de données sur le même support, de réduire le temps (et le coût) de transmission, de réduire le temps d'accès,... De ce fait, la compression est souvent utilisée de pair avec l'archivage.

Il existe différents type de compression, certains étant sans perte d'information (gzip, bzip2, ark, zip...), d'autres avec perte d'information (jpeg, mp3, divx,...) -- ces derniers sont des algorithmes de compression spécifiques à certains types de données (images, son, vidéo,...) qui peuvent supporter de la perte d'information sans que cela se ressente.

Sous UNIX le programme de compression de données sans perte d'information le plus utilisé est gzip (suivi de bzip2). Il permet la compression et la décompression. Pour compresser un fichier archive par exemple (avant de l'envoyer par courriel, de le stocker, ...), on utilise la commande:

ordi:~ > gzip fichiers.tar <CR>

Le fichier fichiers.tar se transforme en un fichier fichiers.tar.gz. Pour le décompresser, on utilise l'option -d:

ordi:~ > gzip -d fichiers.tar.gz <CR>

On peut utiliser aussi le programme gunzip qui décompresse:

ordi:~ > gunzip fichiers.tar.gz <CR>

Archivage et compression en même temps

Pour un envoi par courrier électronique, ou un téléchargement, on veut souvent regrouper des fichiers (un fichier archive est plus pratique à manier que toute une collection de fichiers individuels) et les comprimer (plus rapide à transférer, prend moins de place). De nombreux logiciels font donc les deux opérations en même temps (WinZip, Stuffit, ...). tar aussi sait faire (option -z):

ordi:~ > tar -cvzf fichiers.tar.gz fichier_1 fichier_2 fichier_3 <CR>

va regrouper en une archive de nom fichiers.tar.gz, trois fichiers de noms fichier_1, fichier_2 et fichier_3, et appeler gzip pour comprimer le tout à la fin. On se retrouve directement avec un fichier fichiers.tar.gz, comme si on avait executé les deux commandes suivantes l'une après l'autre:

ordi:~ > tar -cvf fichiers.tar fichier_1 fichier_2 fichier_3 <CR>
fichier_1
fichier_2
fichier_3
ordi:~ > gzip fichiers.tar <CR>

C'est équivalent ! Pour l'opération inverse, c'est semblable:

Désarchivage et décompression en même temps

On peut extraire tous les fichiers d'une archive compressée fichiers.tar.gz (souvent l'extension .tar.gz est abrégée en .tgz, comme dans fichiers.tgz) d'un coup avec

ordi:~ > tar -xvzf fichiers.tar.gz <CR>
Auteur(s) : Anciens, A. Daerr. Dernière modification : Fri Nov 10 02:12:32 2006. [valid. XHTML]