tar, gzip, bzip, rar, ZIP, 7zip – La compression/décompression de fichiers sur Linux

Linux gère la plupart des formats de fichiers compresses (gzip, Zip, rar, 7zip) mais aussi tar.
Par défaut la compression de fichiers se fait avec avec des solutions open source gzip ou bzip2 qui ne peuvent compresser un seul fichier à la fois.
Bien entendu, on peut aussi utiliser des alternatives libres ou non comme unzip, unrar ou même 7zr.
Il existe pour cela des gestionnaires d'archive en graphique mais on peut aussi utiliser des commandes tar, gzip, bzip2, 7z, 7zr en ligne de commandes.
Très pratique lorsqu'il s'agit de transférer des fichiers par le réseau entre plusieurs machines ou pour créer des sauvegardes.

Ce tutoriel regroupe toutes les commandes pour compresser et décompresser des fichiers sur Linux.

tar, untar, gzip, bzip, rar, ZIP, 7zip - La compression/décompression de fichiers sur Linux

tar, untar, gzip, bzip, rar, ZIP, 7zip - La compression/décompression de fichiers sur Linux

Gzip : Compresser et décompresser des fichiers gz

gzip est un programme de compression très populaire sur Linux.
Il est plus rapide que bzip2 mais le taux de compression est un peu moins bon.

Compresser des fichiers ou dossiers

Pour compresser plusieurs fichiers avec gzip :

gzip fichier1 fichier2 fichier3

Vous obtenez alors des fichiers fichier1.gz, fichier2.gz, fichier3.gz
Pour obtenir un fichier unique, il faut utiliser tar (voir plus bas).

Pour compresser tous les fichiers d'un répertoire donné au format gzip, utilisez l'option -r :

gzip -r /repertoire

Décompresser un fichier

Voici comment décompresser un fichier.gz avec gzip.
Cela supprime le fichier compressé initial.

gzip -d nom_fichier.gz

Une autre commande que vous pouvez utiliser pour décompresser un fichier Gzip est gunzip.
Cette commande est essentiellement un alias de gzip -d :

gunzip nom_fichier.gz

Pour garder le fichier compressé initial, on utilise l'option -k :

gzip -dk nom_fichier.gz

Lister le contenu d'un fichier gz

Voici comment afficher le contenu d'un fichier gz avec des statistiques de compression.

gzip -lv fichier.gz

Options et autres commandes liées à gzip

Enfin il existe des dérivés de commandes pour lire le contenu d'un fichier sans devoir le décompresser.
C'est notamment utile pour les fichiers journaux qui utilisent gzip par défaut.

  • zcat : lire un fichier compressé (gzippé)
  • zmore : lire un fichier compressé (gzippé)
  • zless : lire un fichier compressé (gzippé)

bzip2 : Compresser et décompresser des fichiers bz2

Compresser des fichiers ou dossiers

Pour compresser un fichier avec bzip2.

bzip2 nom_fichier.txt

Cela va créer l'archive fichier.txt.bz2

Mais là aussi, on peut créer plusieurs fichiers compressés pour obtenir fichier1.txt.bz2 fichier2.txt.bz2 fichier3.txt.bz2 :

bzip2 fichier.txt fichier1.txt fichier1.txt

Décompresser un fichier bz2

Dans cet exemple, on décompresse fichier.txt.bz2 pour obtenir fichier.txt

bzip2 -d fichier.txt.bz2

Tar : Comment tar et untar un fichier

Tar est une commande qui permet de regrouper des fichiers ensemble.
En clair donc il permet de paqueter les fichiers.
Ainsi, lorsque l'on tar un dossier, vous créez un fichier unique contenant toute l'arborescence du dossier.
Attention, le fichier tar n'est pas compressé.
Pour compresser un fichier tar, on peut demander à utiliser gzip ou bzip2.

Les options de la commande tar :

OptionsDescription
-cCréer une nouvelle archive
-vMode bavard
-fUtiliser le fichier archive
-zFiltre d'archive pour gzip
-jFiltre d'archive pour bzip2
-xextraire le contenu du fichier tar
-tListe le contenu d'un fichier tar
-Cdir : Passez à REPERTOIRE avant d'effectuer toute opération
--excludeExclure les fichiers correspondant à PATTERN / REPERTOIRE / NOM
--wildcardsDemande à tar de traiter les arguments de ligne de commande comme des modèles de globulation.
Les options et paramètres de la commande tar

Compresser un répertoire avec tar

Le paramètre -c permet de créer un nouvelle archive compressée.

Pour compresser un répertoire entier avec gzip :

tar -zcvf fichier.tar.gz /chemin/repertoire

Pour compresser plusieurs répertoires avec gzip :

tar -zcvf fichier.tar.gz dir1 dir2 dir3

Mais si vous possédez déjà un fichier tar et souhaitez ajouter de nouvelles fichiers à ce dernier, cela est possible avec la commande -r.
Pour ajouter de nouveaux fichiers à l'archive sauvegarde.tar.gz :

tar -rvfz sauvegarde.tar.gz /repertoire

Compresser un répertoire avec tar avec bzip2, on retrouve le même principalement simplement on remplace z par j :

tar -cjvf fichier.tar.bz2 /chemin/repertoire

Lister les fichiers d'un fichier tar sans l'extraire

Pour visualiser le contenu d'un fichier tar sans le décompresser, on utilise l'option t à la place de x :

tar -ztvf fichier.tar.gz
tar -jtvf fichier.tar.bz2

Décompresser le contenu d'un fichier tar

Vous pouvez extraire une archive ou une archive tar avec la commande tar. La syntaxe est :

tar -xzvf fichier.tar.gz
tar -xjvf fichier.tar.bz

Pour décompresser un fichier tar dans un répertoire spécifique, on utilise l'option -C.
Par exemple pour décompresser dans /tmp :

tar -xjvf archive.tar.bz2 -C /tmp/

Exclure des fichiers ou repertoire dans la compression tar

Voici comment exclure des fichiers ou répertoires lors de la compression tar :

tar -zcvf archive.tar.gz --exclude='repertoire1' --exclude='regex' /repertoire

Par exemple pour exclure le répertoire Téléchargements de votre archive tar :

tar -czvf /nfs/backup.tar.gz --exclude="Telechargements" /home/malekalmorte/

Extraire un répertoire ou fichier spécifique d'un fichier tar

Parfois on a pas besoin d'extraire le contenu entier d'un fichier tar mais on désire extrair un répertoire ou fichier spécifique d'un fichier tar.

Par exemple pour extraire le dossier /etc de sauvegarde.tar.gz :

tar -zxvf sauvegarde.tar.gz etc/

On peut aussi utiliser les caractères joker pour extraire certains contenus en particulier.
Par exemple, pour extraire de images.tar tous les fichiers commençant par pic, quel que soit leur préfixe de répertoire, vous pouvez taper :

tar -xf cbz.tar --wildcards --no-anchored 'pic*'

tar over SSH

Comment utiliser la commande tar sur une session SSH sécurisée exécutée sur un système Linux ou Unix?
Plusieurs syntaxes sont possibles pour transférer un fichier tar via SSH.

Voici la première :

ssh [email protected] tar czf - /source-repertoire/ /destination/fichier.tar.gz

Deuxième syntaxe :

ssh [email protected] 'cd /source-repertoire/ tar -cf - fichier | gzip fichier.tar.gz

ZIP : compresser et décompresser des fichiers ZIP

Linux permet aussi de créer des fichiers ZIP ou RAR.
Ces derniers n'étant pas des formats de compressions libres, les programmes ne sont en général pas installés par défaut dans les distributions Linux.
Il faut donc installer le programme.

Par exemple sur Debian :

apt-get install zip unzip

Pour compresser nomfichier en fichier.zip :

zip fichier.zip nomfichier

On peut aussi faire du récursif sur un répertoire :

zip fichier.zip -r /chemin/repertoire

Enfin pour décompresser un fichier ZIP sur Linux :

unzip fichier.zip

unrar-free : Décompresser des fichiers RAR

Il est aussi possible de décompresser des fichiers RAR en ligne de commandes sur Linux.
Cependant, il n'est pas possible de compresser en RAR étant donné qu'il s'agit d'un algorithme propriétaire.

Tout d'abord, on installe unrar-free avec apt-get :

apt-get install unrar-free

Puis voici comment décompresser un fichier rar sur Linux :

unrar -x fichier.rar

Par exemple pour décompresser l'archive minecraft-mod.rar :

unrar -x minecraft-mod.rar