Cette page a pour but de vous apprendre à compresser et à archiver des fichiers sous Unix. Mais d'abord, commençons par expliquer chacune de ces notions.
Compresser un fichier, c'est le traiter d'une telle sorte qu'il puisse occuper moins d'espace disque. Le principe de base de la compression est d'éviter les redondances ; par exemple, au lieu d'écrire 1111111111111, il est plus économique d'écrire qu'il y a treize « 1 » à la suite.
Le but de l'archivage n'est pas de réduire l'espace disque d'un fichier, mais de rassembler plusieurs fichiers en un seul, afin de faciliter leur manipulation.
On peut compresser des fichiers archivés, et archiver des fichiers compressés.
Dans les deux cas, le fichier est d'abord codé par un programme (de compression ou d'archive). Mais pour utiliser des fichiers (par exemple pour les lire ou les modifier), il faut les décoder. Cette page vous apprendra donc comment compresser et décompresser, archiver et désarchiver des fichiers.
Compresser permet d'économiser de l'espace disque ; associée à l'archivage, la compression se révèle très utile. En particulier, à l'ENS, les ressources en espace disque ne sont pas illimitées ; consultez la page des tuteurs consacrée à l'espace disque pour plus d'informations.
Gzip
(GNU zip) est un outil de compression (extension :
.gz) qui a plus ou moins remplacé compress
: il est
plus puissant que compress
, et il est fondé, lui, sur des
algorithmes libres. Gunzip
peut décompresser des fichiers
compressés par gzip
, compress
ou
pack
. En revanche, il ne peut pas décompresser des
fichiers .zip (il faut utiliser unzip
).
Pour des raisons historiques, gzip
est encore le plus
utilisé des formats de compression, quand bien même il n'est pas le plus
puissant.
gzip
La grande majorité des programmes est incapable de lire directement des
fichiers compressés avec gzip
: il faut préalablement
les décompresser. Il y a cependant des exceptions notables :
zcat
équivaut à la
commande cat
, mais pour des fichiers compressés avec
gzip
;less
détecte et
décompresse automatiquement les fichiers compressés avec
gzip
(ce qui n'est pas le cas de la commande
more
) ;gv
(Ghostview) décode
automatiquement les fichiers compressés avec gzip
;
vous pouvez donc sans problème compresser vos fichiers PostScript ou
PDF, car vous pourrez les lire sans avoir à les décompresser
préalablement.gzip
Opération | Commande |
---|---|
Compresser un fichier | gzip fichier |
Compression optimisée d'un fichier (pour fichiers > 100 Ko) | gzip -9 fichier |
Décompresser un fichier gzippé | gunzip fichier.gz |
Lire le contenu d'un fichier gzippé (sans le décompresser) | zcat fichier.gz |
Bzip2 est un outil de compression (extension : .bz2) qui est plus lent que gzip, mais plus puissant. Il est libre et fondé sur un algorithme libre, lui aussi.
bzip2
Comme pour gzip
, la grande majorité des programmes est
incapable de lire directement des fichiers compressés avec
bzip2
, à quelques exceptions près :
bzcat2
équivaut à la
commande cat
, mais pour des fichiers compressés avec
bzip2
;less
détecte et
décompresse automatiquement les fichiers compressés avec
bzip2
(ce qui n'est pas le cas de la commande
more
) ;gv
(Ghostview) décode
automatiquement les fichiers compressés avec bzip2
;
vous pouvez donc sans problème compresser vos fichiers PostScript ou
PDF, car vous pourrez les lire sans avoir à les décompresser
préalablement. bzip2
Opération | Commande |
---|---|
Compresser un fichier | bzip2 fichier |
Compression optimisée d'un fichier (pour fichiers > 100 Ko) | bzip2 -9 fichier |
Décompresser un fichier gzippé | bunzip2 fichier.gz |
Lire le contenu d'un fichier gzippé (sans le décompresser) | bzcat2 fichier.gz |
Tar est un programme qui permet d'archiver et de désarchiver. C'est l'un des plus courants dans le monde Unix.
tar
Opération | Commande |
---|---|
Créer une archive tar | tar cf fichier.tar fichiers... à... archiver |
Voir le contenu d'une archive tar | tar tf fichier.tar |
Désarchiver un fichier tar | tar xf fichier.tar |
Extraire certains fichiers d'une archive tar | tar xf fichier.tar les... fichiers... en... question |
tar
avec gzip
tar
est souvent utilisé avec gzip
. Les
fichiers ainsi produits ont des extensions en .tar.gz ou ou .tgz. Pour
les manipuler, on utilise les mêmes commandes que tar
seul,
en ajoutant un z à la fin des options (exemple : pour désarchiver
fichier.tgz, taper : tar xfz fichier.tgz
).
Zip est un outil de compression et d'archivage (extension : .zip) que vous connaissez presque forcément. Il est compatible avec ZIP de PKWARE et avec WINZIP, qui sont le standard sous DOS/Windows (mais pour autant ce n'est pas un clone). C'est le format de compression le plus pratique pour échanger des documents de UNIX à Windows ou Mac (le format de document le plus pratique étant PDF, on vous le rappelle).
Remarque : zip n'est pas seulement un programme
d'archivage, car il permet d'économiser de l'espace disque en
compressant les fichiers ; et ce n'est pas seulement un programme
de compression, car il rassemble plusieurs fichiers en un seul. Son
équivalent dans le monde Unix n'est donc ni gzip
ni
tar
, mais le format tar.gz
ou tgz
(c'est-à-dire une archive tar
compressée avec
gzip
).
zip
Opération | Commande |
---|---|
Créer une archive ZIP | zip fichier.zip fichiers... à... archiver |
Voir le contenu d'une archive ZIP | unzip -l fichier.zip |
Désarchiver un fichier ZIP | unzip fichier.zip |
Désarchiver un fichier ZIP dans un répertoire donné | unzip -d répertoire fichier.zip |
Extraire tous les fichiers d'une archive ZIP, sauf certains | unzip fichier.zip -x fichiers... à... ne... pas... extraire |
Le format JAR (pour Java ARchive) a été introduit dans la version 1.1 du Java Development Kit. C'est un format fondé sur ZIP. Les archives JAR ont une extension .jar. Mozilla, par exemple, utilise des archives JAR.
jar
Opération | Commande |
---|---|
Créer une archive JAR | jar cf fichier.jar fichiers... à... archiver |
Voir le contenu d'une archive JAR | jar tf fichier.jar |
Désarchiver un fichier JAR | jar xf fichier.jar |
Extraire certains fichiers d'une archive JAR | jar xf fichier.jar les... fichiers... en... question |
UNARJ sert à désarchiver les fichier en .arj.
Le format .arj était très utilisé sous DOS. Il n'est plus très
utilisé aujourd'hui, ni dans le monde Unix (qui préfère
gzip
), ni dans le monde Windows (qui préfère
zip
). Il est donc fortement déconseillé d'utiliser ce
format pour compresser des fichiers.
arj
Opération | Commande |
---|---|
Désarchiver un fichier ARJ dans le fichier courant | unarj e fichier.arj |
Voir le contenu d'une archive ARJ | unarj l fichier.arj |
Tester un fichier ARJ | unarj t fichier.arj |
Désarchiver dans les répertoires prévus par l'archive ARJ | unarj x fichier.arj |
LHa est un outil de compression et d'archivage pour le format LHarc (extension : .lhz). LHa est principalement utilisée sous DOS. C'est un outil puissant.
LHa
Opération | Commande |
---|---|
Créer une archive LHa | lha -a fichier.lhz fichiers... à... archiver |
Désarchiver un fichier LHa | lha -e fichier.lhz ou lha x fichier.lhz |
Voir le contenu d'une archive LHa | lha -l fichier.lhz |
ZOO est un outil de compression et d'archivage (extension : .zoo) qui utilise un algorithme de Lempel-Ziv. Le gain d'espace varie entre 20 et 80%.
ZOO
Opération | Commande |
---|---|
Créer une archive ZOO | zoo -add fichier.zoo fichiers... à... archiver |
Désarchiver un fichier ZOO | zoo -extract fichier.zoo |
Extraire certains fichiers d'une archive ZOO | zoo -extract fichier.zoo fichiers... à... extraire |
Voir le contenu d'une archive ZOO | zoo -list fichier.zoo |