Comment extraire des fichiers d'un fichier .tar.gz ou .tar.bz2 sous Linux

Les fichiers Tar sont des archives compressées. Vous les rencontrerez fréquemment en utilisant une distribution Linux telle que Ubuntu ou même en utilisant le terminal sous macOS. Voici comment extraire ou décompresser le contenu d’un fichier tar, également appelé tarball.

Que signifie .tar.gz et .tar.bz2?

Les fichiers ayant une extension .tar.gz ou .tar.bz2 sont des fichiers d’archives compressés. Un fichier avec simplement une extension .tar est décompressé, mais ceux-ci seront très rares.

La partie .tar de l'extension de fichier correspond à t ape ar , et explique pourquoi ces deux types de fichiers sont appelés fichiers tar. . Les fichiers tar remontent à 1979 lorsque la commande tar a été créée pour permettre aux administrateurs système d'archiver des fichiers sur une bande. Quarante ans plus tard, nous utilisons toujours la commande tar pour extraire les fichiers tar sur nos disques durs. Quelqu'un, quelque part, utilise probablement encore tar avec une bande.

Le suffixe d'extension .gz ou .bz2 indique que l'archive a été compressée à l'aide du gzip ou du bzip2 algorithme de compression. La commande tar fonctionnera avec les deux types de fichiers. La méthode de compression utilisée n’a donc aucune importance. Elle devrait être disponible partout où vous avez un shell Bash. Vous devez simplement utiliser les options de ligne de commande tar appropriées.

Extraction de fichiers à partir de fichiers Tar

Disons que vous avez téléchargé deux fichiers de partitions. Un fichier est appelé ukulele_songs.tar.gz , l'autre est appelé guitar_songs.tar.bz2 . Ces fichiers sont dans le répertoire Téléchargements.

Extrayons les chansons en ukulélé:

tar -xvzf ukulele_songs.tar.gz

À mesure que les fichiers sont extraits, ils sont répertoriés dans la fenêtre du terminal.

Les options de ligne de commande que nous avons utilisées sont:

  • -x: Extract, retrieve the files from the tar file.
  • -v: Verbose, list the files as they are being extracted.
  • -z: Gzip, use gzip to decompress the tar file.
  • -f: File, the name of the tar file we want tar to work with. This option must be followed by the name of the tar file.

Répertoriez les fichiers du répertoire avec ls et vous verrez qu'un répertoire a été créé appelé Ukulele Songs. Les fichiers extraits sont dans ce répertoire. D'où vient ce répertoire? Il figurait dans le fichier tar et était extrait avec les fichiers.

Maintenant, extrayons les chansons de guitare. Pour ce faire, nous utiliserons presque exactement la même commande qu'auparavant, mais avec une différence importante. Le suffixe d'extension .bz2 nous indique qu'il a été compressé à l'aide de la commande bzip2. Au lieu d'utiliser l'option -z (gzip), nous utiliserons l'option -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Une fois encore, les fichiers sont répertoriés dans le terminal au fur et à mesure de leur extraction. Pour être clair, les options de ligne de commande que nous avons utilisées avec tar pour le fichier .tar.bz2 étaient les suivantes:

  • -x: Extract, retrieve the files from of the tar file.
  • -v: Verbose, list the files as they are being extracted.
  • -j: Bzip2, use bzip2 to decompress the tar file.
  • -f: File, name of the tar file we want tar to work with.

Si nous répertorions les fichiers dans le répertoire de téléchargement, nous verrons qu'un autre répertoire appelé Guitar Songs a été créé.

Choisir où extraire les fichiers

Si nous voulons extraire les fichiers dans un emplacement autre que le répertoire actuel, nous pouvons spécifier un répertoire cible à l'aide de l'option -C (répertoire spécifié).

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

En regardant dans notre répertoire Documents/Songs, nous verrons que le répertoire Guitar Songs a été créé.

Notez que le répertoire cible doit déjà exister, tar ne le créera pas s'il n'est pas présent. Si vous devez créer un répertoire et que tar extrait les fichiers en une seule commande, procédez comme suit:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

L'option -p (parents) permet à mkdir de créer les répertoires parents requis, en s'assurant que le répertoire cible est créé.

Regarder à l'intérieur des fichiers Tar avant de les extraire

Jusqu'ici, nous avons simplement pris un acte de foi et extrait les fichiers à la vue invisible. Vous voudrez peut-être regarder avant de sauter. Vous pouvez consulter le contenu d'un fichier tar avant de l'extraire à l'aide de l'option -t (list). Il est généralement pratique de diriger la sortie via la commande less .

tar -tf ukulele_songs.tar.gz | less

Notez que nous n’avons pas besoin d’utiliser l’option -z pour répertorier les fichiers. Nous n'avons besoin d'ajouter l'option -z que lorsque nous extrayons les fichiers d'un fichier .tar.gz . De même, nous n’avons pas besoin de l’option -j pour répertorier les fichiers dans un fichier tar.bz2 .

En parcourant la sortie, nous pouvons voir que tout le fichier tar est contenu dans un répertoire appelé Ukulele Songs, et que ce répertoire contient des fichiers et d'autres répertoires.

Nous pouvons voir que le répertoire Ukulele Songs contient des répertoires appelés Random Songs, Ramones et Possibles.

Pour extraire tous les fichiers d'un répertoire dans un fichier tar, utilisez la commande suivante. Notez que le chemin d'accès est entouré de guillemets, car il contient des espaces.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

Pour extraire un seul fichier, indiquez le chemin d'accès et le nom du fichier.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

Vous pouvez extraire une sélection de fichiers à l'aide de caractères génériques, où * représente une chaîne de caractères et ? représente un seul caractère. L'utilisation de caractères génériques nécessite l'utilisation de l'option - caractères génériques .

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Extraction de fichiers sans extraction de répertoires

Si vous ne voulez pas que la structure de répertoires du fichier tar soit recréée sur votre disque dur, utilisez l’option - strip-components . L'option - strip-components nécessite un paramètre numérique. Le nombre représente combien de niveaux de répertoires à ignorer. Les fichiers des répertoires ignorés sont toujours extraits, mais la structure de répertoires n'est pas répliquée sur votre disque dur.

Si nous spécifions - strip-components = 1 avec notre exemple de fichier tar, le répertoire situé en haut du répertoire Ukulele Songs du fichier tar n'est pas créé sur le disque dur. Les fichiers et répertoires qui auraient été extraits dans ce répertoire sont extraits dans le répertoire cible.

tar -xvzf ukulele_songs.tar.gz --strip-components=1

Il n'y a que deux niveaux d'imbrication de répertoire dans notre exemple de fichier tar. Donc, si nous utilisons - strip-components = 2 , tous les fichiers sont extraits dans le répertoire cible et aucun autre répertoire n'est créé.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

Si vous consultez la page de manuel Linux, vous verrez que tar doit être un bon candidat pour le titre de «commande ayant le plus d'options en ligne de commande». Depuis les fichiers .tar.gz et tar.bz2 avec un bon degré de contrôle granulaire, il suffit de rappeler quelques options.