Manipuler les archives avec TAR sous Linux

Écrit par fdgeek
11 minutes
Manipuler les archives avec TAR sous Linux

Le logiciel TAR  est fourni avec la quasi totalité des distributions Linux disponibles. Nativement, c'est un programme destiné à rassembler plusieurs fichiers dans une seule et même archive à des fins de sauvegarde sur bande magnétique (d'où son nom : "Tape Archiver").

De base, il ne compresse rien. Mais, la plupart du temps il est utilisé avec des outils de compression tels que Gzip, Bzip2 ou XZ. Ces derniers sont eux aussi souvent installés au sein des distributions les plus courantes et proposent chacun leur algorithme de compression. Un des gros atouts de Tar est dû au fait qu'il est capable de conserver les droits des utilisateurs (propriétaires et groupes) initialement attribués aux répertoires et aux fichiers.

C'est pour cela que sous Linux  (et même parfois sur d'autres systèmes) on est souvent amené à manipuler des archives de fichiers compressés aux formats : .tar.gz, .tar.bz2 et .tar.xz

Il me paraissait donc intéressant de proposer un petit récapitulatif des commandes  les plus courantes et des options proposées par Tar. Bien évidement, cela s'adresse plus particulièrement aux utilisateurs manipulant des archives en ligne de commandes. Ce qui est le cas des détenteurs d'une distribution Linux installée sans interface graphique. (Par exemple dans le cas d'un serveur ou lors d'une connexion distante via le protocole ssh). Hormis la curiosité ou le plaisir de saisir les commandes au clavier ceux ayant une interface graphique auront plus vite fait d'utiliser un logiciel  spécifique tel que : PeaZip.

Mais, une fois les commandes et leur signification mémorisées, vous verrez qu'utiliser Tar en ligne de commandes n'est pas très compliqué.

En tour premier lieu, il faut savoir que le processus d'archivage et de compression demeure toujours le même : Les fichiers sont d'abord rassemblés dans une archive au format .Tar et cette dernière peut ensuite être compressée afin d'en réduire la taille avec le programme souhaité.(D'où au final, la double extension de fichier)

1) Listons d'abord les principales options de commandes de Tar :

  • tar     = la commande principale pour déclencher une opération d'archivage
  • -c       = créer une archive (create)
  • -v       = visualiser les opérations en cours à l'écran (verbose mode)
  • -f        = spécifier le nom du fichier archive (file)
  • -x       = extraire les fichiers d'une archive (extract)
  • -z       = compresser l'archive avec Gzip
  • -J       = compresser l'archive avec XZ
  • -j        = compresser l'archive avec Bzip2
  • -t        = affiche et liste les fichiers présent dans l'archive
  • -r        = ajoute des fichiers à une archive existante
  • --exclude     = exclure des fichiers ou des dossiers lors de l'archivage

2) Dans la pratique pour créer une archive tar :

  • Exemple 1 : archiver un répertoire entier. Dans ce cas de figure, l'archivage est récursif : tous les fichiers et les sous dossiers présents dans le répertoire seront archivés.
tar -cvf mon_archive.tar /chemin/nom_du_dossier_a_archiver

  • Exemple 2 : archiver un fichier particulier (ici une vidéo au format .avi)
tar -cvf mon_archive.tar /dossier/nom_du_fichier_a_archiver.avi

  • Exemple 3 : archiver des répertoires et des fichiers différents dans la même archive. Il suffit d'indiquer leur nom et chemin en les séparant  par un espace
tar -cvf mon_archive.tar /Documents/dossier01/ /album_photos/photo01.jpg /Musique/tube01.mp3

  • Exemple 4 : exclure certains fichiers ou dossiers. Imaginons par exemple que vous souhaitiez créer une archive du dossier /Documents mais qu'au sein de ce dernier figure un sous-dossier /Documents /brouillons et un fichier /Documents/toto.otf que vous ne voulez pas voir figurer dans votre archive :
tar -cvf mon_archive.tar /Documents --exclude=/Documents/brouillons --exclude=/Documents/toto.otf

  • Exemple 5 : rajouter un fichier à une archive existante
tar -rvf mes_videos.tar /dossier/nom_du_fichier_a_rajouter.avi

3) Voyons maintenant comment compresser une archive Tar :

Les commandes reste les mêmes que les précédentes. Il suffit juste d'y ajouter l'option indiquant au programme quel type de compression choisir. A noter que la compression avec Gzip utilise l'algorithme Deflate, que Bzip2 utilise son propre algorithme et Xf utilise lui l'algorithme LZMA2. La différence entre les trois réside dans leur vitesse de compression, le taux de compression et la prise en charge des accélérations matérielles.

  • Exemple 1: Archiver tous les dossiers et fichiers d'un répertoire en compressant l'archive avec Gzip, avec Bzip2 et avec XZ
tar -czvf mon_archive.tar.gz /Documents

tar -cjvf mon_archive.tar.bz2 /Documents

tar -cJvf mon_archive.tar.xz /Documents

  • Exemple 2 : Archiver et compresser en Gzip tout le contenu d'un répertoire sauf les fichiers .png qui y sont présents
tar -czvf mon_archive.tar.gz /Images --exclude=*.png

4) La décompression d'une archive .Tar compressée :

Avant toute chose, il faut savoir que lorsque vous décompressez une archive, l'extraction s'effectue dans le répertoire où elle se situe. Attention donc au risque d'écrasement des fichiers si l'extraction est effectuée dans le répertoire d'origine. Je recommande donc fortement de spécifier la création d'un répertoire d'extraction temporaire lors de la décompression d'une archive. La décompression est très simple, il suffit de remplacer l'option de création d'archive (-c) par l'option d'extraction (-x)

  • Exemple : Décompression d'un archive .tar.gz, d'une archive .tar.bz2 et .tar.xz dans un dossier temporaire créé dans la foulée
tar -xzvf mon_archive.tar.gz -C /Dossier_temporaire

tar -xjvf mon_archive.tar.bz2 -C /Dossier_temporaire

tar -xJvf mon_archive.tar.xz -C /Dossier_temporaire

5) Afficher à l'écran et lister les fichiers présents dans une archive sans l'extraire:

Cela s'effectue via le paramètre -t . Option bien utile pour examiner le contenu d'une archive que l'on vient de télécharger afin d'être sur de ne pas décompresser tout et n'importe quoi sur sa machine... (ex: programme malveillant 😅).

tar -tf mon_archive.tar.gz

Pour terminer, sachez que le programme Tar renferme encore beaucoup d'options dont vous n'aurez pas de mal à trouver l'utilité au sein de la documentation officielle.

A bientôt.