Les archives tar sont des conteneurs compressés de fichiers, rencontrés fréquemment sous Linux, comme Ubuntu, ou lors de l’utilisation du terminal sur macOS. Cet article détaille comment extraire – ou décompresser – le contenu d’un fichier tar, aussi appelé tarball.
Signification de .tar.gz et .tar.bz2
Les fichiers dotés des extensions .tar.gz ou .tar.bz2 sont des archives compressées. Un fichier avec l’extension .tar seule est non compressé, mais ces cas sont extrêmement rares.
La partie ‘.tar’ de l’extension indique une archive sur bande. C’est pourquoi ces fichiers sont dits « fichiers tar ». L’outil tar remonte à 1979, créé pour aider les administrateurs système à archiver des fichiers sur bande. Quarante ans plus tard, il est toujours utilisé pour extraire des fichiers tar sur les disques durs. Il est même probable que certains continuent à utiliser tar avec des bandes magnétiques.
Les suffixes d’extension .gz ou .bz2 signalent que l’archive a été compressée par les algorithmes gzip ou bzip2. La commande tar est compatible avec les deux types de compression, et elle est généralement disponible partout où un shell Bash est présent. Il suffit d’utiliser les options de ligne de commande tar appropriées.
Extraction de Données à partir d’Archives Tar
Supposons que deux archives aient été téléchargées : ukulele_songs.tar.gz et guitar_songs.tar.bz2, toutes deux situées dans le répertoire Téléchargements.
Commençons par extraire le contenu de ukulele_songs:
tar -xvzf ukulele_songs.tar.gz
Pendant l’extraction, le nom des fichiers est affiché dans le terminal.
Les options employées sont:
-x | Extrait les fichiers de l’archive tar. |
-v | Mode « verbose » : affiche la liste des fichiers pendant l’extraction. |
-z | Utilise gzip pour décompresser le fichier tar. |
-f | Indique le nom du fichier tar à traiter. Suivie par le nom du fichier tar. |
Après la commande, une liste de fichiers (via `ls`) révèle la création d’un répertoire appelé « Ukulele Songs », contenant les fichiers extraits. Ce répertoire était inclus dans l’archive tar.
Extrayons maintenant le contenu de guitar_songs. L’instruction sera presque la même, mais le suffixe .bz2 indique l’emploi de bzip2. L’option `-z` (gzip) sera donc remplacée par `-j` (bzip2).
tar -xvjf guitar_songs.tar.bz2
Ici aussi, les fichiers extraits sont listés durant le processus. Voici le détail des options utilisées pour .tar.bz2 :
-x | Extraction des fichiers de l’archive. |
-v | Mode « verbose » : affichage de la liste des fichiers. |
-j | Utilise bzip2 pour décompresser. |
-f | Indique le nom du fichier tar cible. |
L’exploration du répertoire Téléchargements montre la création d’un nouveau répertoire « Guitar Songs ».
Choisir le Dossier de Destination
Pour extraire les fichiers ailleurs que dans le répertoire actuel, l’option -C (répertoire spécifié) permet de définir un emplacement de destination.
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Dans le répertoire « Documents/Songs » se trouve désormais le dossier « Guitar Songs ».
Notez bien : le répertoire cible doit exister, car tar ne le créera pas. Pour créer le dossier et y extraire les fichiers en une seule commande, utilisez :
mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/
L’option `-p` (parents) force `mkdir` à créer tous les dossiers parents nécessaires, garantissant la création du répertoire final.
Inspection du Contenu d’une Archive Tar
Au lieu d’extraire les fichiers sans précaution, il est possible de les examiner avant. L’option `-t` (liste) permet de visualiser le contenu. L’utilisation de `less` simplifie la consultation.
tar -tf ukulele_songs.tar.gz | less
Notez que l’option `-z` n’est pas requise pour lister le contenu, seulement lors de l’extraction d’un .tar.gz. De même, l’option `-j` n’est pas nécessaire pour un .tar.bz2.
La sortie révèle que le contenu de l’archive est dans un dossier « Ukulele Songs », qui contient d’autres fichiers et dossiers.
On y trouve les répertoires « Random Songs », « Ramones » et « Possibles ».
Pour extraire tous les fichiers d’un répertoire spécifique de l’archive, utilisez la commande ci-dessous, où le chemin est entre guillemets car il inclut des espaces :
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
Pour extraire un seul fichier :
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
Il est possible d’utiliser des caractères génériques pour extraire plusieurs fichiers : * pour n’importe quelle chaîne de caractères, ? pour un seul caractère. L’option `–wildcards` est nécessaire :
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
Extraire sans Recréer la Structure des Répertoires
Pour éviter de recréer la structure du tar sur le disque, l’option `–strip-components` permet de supprimer un certain nombre de niveaux de répertoires. Un paramètre numérique est nécessaire.
Avec `–strip-components=1`, le dossier de premier niveau de « Ukulele Songs » n’est pas créé. Les fichiers contenus y sont extraits dans le répertoire cible.
tar -xvzf ukulele_songs.tar.gz --strip-components=1
L’archive tar a deux niveaux de répertoires. `–strip-components=2` extrait donc tous les fichiers directement dans le répertoire cible, sans créer aucun dossier.
tar -xvzf ukulele_songs.tar.gz --strip-components=2
La page de manuel Linux de `tar` montre la grande quantité d’options disponibles. Heureusement, pour une extraction basique, seules quelques options sont nécessaires pour gérer fichiers .tar.gz et tar.bz2 avec une grande flexibilité.