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).
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>
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
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
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.
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>
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:
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>