# Archiver

# Archiver et compresser sous Unix

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.

## Introduction

### Qu'est-ce que compresser/archiver ?

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.

Remarque terminologique : le mot « compresser » n'existe pas en bon français, car c'est un anglicisme conçu à partir du verbe compress qui signifie comprimer. Toutefois, l'usage de ce verbe s'étant très largement répandu, nous le suivons lâchement et tournons le dos au dictionnaire de l'Académie.

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.

### Pourquoi compresser/archiver ?

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.

## Compresser et décompresser

### Gzip et gunzip

`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.

#### Lire des fichiers compressés avec `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 :

- la commande `zcat` équivaut à la commande `cat`, mais pour des fichiers compressés avec `gzip` ;
- la commande `less` détecte et décompresse automatiquement les fichiers compressés avec `gzip` (ce qui n'est pas le cas de la commande `more`) ;
- la commande `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.

#### Synopsis de `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 et bunzip2

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.

#### Lire des fichiers compressés avec `bzip2`

Comme pour `gzip`, la grande majorité des programmes est incapable de lire directement des fichiers compressés avec `bzip2`, à quelques exceptions près :

- la commande `bzcat2` équivaut à la commande `cat`, mais pour des fichiers compressés avec `bzip2` ;
- la commande `less` détecte et décompresse automatiquement les fichiers compressés avec `bzip2` (ce qui n'est pas le cas de la commande `more`) ;
- la commande `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.

#### Synopsis de `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`

## Archiver et désarchiver

### Archiver/désarchiver avec tar

Tar est un programme qui permet d'archiver et de désarchiver. C'est l'un des plus courants dans le monde Unix.

#### Synopsis de `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`

#### Utiliser `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`).

### Archiver/désarchiver avec zip

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

#### Synopsis de `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`

### Archiver/désarchiver avec JAR

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.

#### Synopsis de `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`

### Désarchiver avec UNARJ

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.

#### Synopsis de `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`

### Archiver/désarchiver avec LHa

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.

#### Synopsis de `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`

### Archiver/désarchiver avec ZOO

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%.

#### Synopsis de `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`

Auteur : Émilia Robin, Marie-Lan Nguyen, Baptiste Mélès.