Menu Fermer

La commande tar : utilisations et exemples

La commande TAR est une commande de base Linux qui vous permet de créer des fichiers archives.
C’est à dire regrouper plusieurs fichiers et de les placer dans un fichier d’archive.
Tar ne gère pas la compression mais on peut lui associer les algorithmes gzip ou bzip. pour créer des archives compressées comme .tar.gz, .tar.bz2 ou tar.tbz.

Dans ce tutoriel je vous montre comment utiliser la commande tar à l’aide de multiples exemples.

La commande tar : utilisations et exemples

Comment utiliser la commande tar

GNU tar est un programme d’archivage conçu pour stocker plusieurs fichiers dans un seul fichier (une archive), et de manipuler ces archives. L’archive peut être un fichier régulier ou un dispositif (par exemple un lecteur de bande, d’où le nom du programme, ce qui signifie bande archiveur), qui peut être située soit au niveau local ou sur une machine distante.

Voici la syntaxe de la commande tar :

Tar [Options] [Fichier d'archives] [Fichier ou répertoire à archiver]
OPTIONSDESCRIPTION
-cCrée des archives
-xExtraire l’archive
-fCrée des archives avec le nom de fichier donné
-tAffiche ou répertorie les fichiers dans le fichier archivé
-uArchive et ajoute à un fichier d’archive existant
-vAffiche les informations verboses
-aConcaténer les fichiers d’archive
-zZip, indique la commande tar qui crée un fichier de goudron à l’aide de GZIP
-jFiltrez le fichier TAR d’archive à l’aide de TBZIP
-wVérifiez un fichier d’archive
-rMettre à jour ou ajouter un fichier ou un répertoire dans le fichier .tar existant déjà
-C dir : Passez à REPERTOIRE avant d’effectuer toute opération
–exclude Exclure les fichiers correspondant à PATTERN / REPERTOIRE / NOM
–wildcardsDemande à tar de traiter les arguments de ligne de commande comme des modèles de globulation
Les options de la commande tar

Pour utiliser et spécifier une option, spécifiez directement celles-ci avant le nom du fichier archive avec ou sans le caractère -.
Ainsi les deux utilisations suivantes sont équivalentes :

tar cvzf fichier.tar.gz *.txt
tar -cvzf fichier.tar.gz *.txt

Enfin, sachez que l’on peut aussi séparer les options, par exemple :

tar -cvz -f fichier.tar.gz *.txt

Enfin les extensions utilisées sont en général :

  • .tar : fichier tar sans compression
  • .tar.gz : fichier tar compressé à l’aide de gzip
  • .tar.bz2 ou .tar.tbz : fichier tar compressé avec bzip2

La commande tar : utilisations et exemples

Créer un un fichier tar non compressé à l’aide d’option -cvf

Pour créer un fichier archive tar, on utilise l’option cvf en spécifiant le nom du fichier tar puis les fichiers à regrouper.
Par exemple pour créer le fichier.tar pour regrouper les fichiers Ubuntu.txt et monbeaufichier.txt :

tar cvf fichier.tar Ubuntu.txt monbeaufichier.txt

Fichier.tar n’est pas compressé, il regroupe simplement tous les fichiers dans un fichier archive unique.

Utilisez le caractère joker pour viser plusieurs fichiers à la fois.
Par exemple pour regrouper tous les fichiers texte dans fichier.tar, on utilise *.txt :

tar cvf fichier.tar *.txt

Là aussi on peut spécifier plusieurs entrées, par exemple pour regrouper les fichier txt et doc :

tar cvf fichier.tar *.txt *.doc

Il est tout à fait possible de spécifier un répertoire pour regrouper tous les fichiers qui s’y trouvent.
Par exemple pour regrouper les fichiers du /home dans un fichier home.tar :

tar cvf home.tar /home
Créer un un fichier tar non compressé à l'aide d'option -cvf

Compresser un fichier TAR avec GZIP en utilisant l’option -z

Pour compresser un fichier tar en utilisant gzip, ajoutez l’option -z.
Ainsi pour créer fichier.tar.gz afin de regrouper et compresser les fichiers txt :

tar cvzf fichier.tar.gz *.txt
Compresser un fichier TAR avec GZIP en utilisant l'option -z

Extraire et décompresser un fichier .tar.gz avec l’option -xvzf

Pour extraire et décompresser le contenu d’un fichier compressé avec gzip, utilisez l’option -xvfz.
On parle aussi d’Untar un fichier.
Par exemple pour décompresser fichier.tar.gz :

tar xvzf fichier.tar.gz
Extraire et décompresser un fichier .tar.gz avec l'option -xvzf

Compresser un fichier tar avec bzip2 en utilisant l’option -j

Au lieu d’utiliser l’algorithme gzip, vous pouvez aussi utiliser la compression bzip2.
Pour cela, on utilise l’option -j à la place de -z.
Par exemple pour compresser et regrouper tous les fichiers .txt dans fichier.tar.bz :

tar cvjf fichier.tar.bz2 *.txt
Compresser un fichier tar avec bzip2 en utilisant l'option -j

Extraire et décompresser un fichier .tar.bz avec l’option -xvjf

Enfin pour Extraire et décompresser le contenu d’un fichier tar.gz, on utilise l’option -xvfz.
Par exemple pour décompresser fichier.tar.bz :

tar xvjf fichier.tar.bz2
Extraire et décompresser un fichier .tar.bz avec l'option -xvjf

Extraire des fichiers sur un répertoire ou un chemin spécifique

Nous pouvons extraire les fichiers dans un répertoire spécifié à l’aide du paramètre -C.
Par exemple pour extraire sauvegarde.tar.gz vers le répertoire /repertoire/sousrepertoire/ :

tar -xvzf sauvegarde.tar.gz -C /repertoire/sousrepertoire/

Attention la commande TAR ne crée aucun fichier ou dossier.

Extraire des fichiers sur un répertoire ou un chemin spécifique

Extraire plusieurs fichiers avec -wildcards

Pour extraire de multiples fichiers, vous pouvez utiliser l’option -wildcards.
Par exemple pour extraire que les fichiers avec l’extension .mp3 :

tar -xvf Musique.tar.gz –wildcards "*.mp3"

Extraire un fichier spécifique d’un fichier tar

Pour extraire un seul fichier sur une archive, ajoutez simplement le nom du fichier après la commande comme celle-ci.

tar -xz -f Musique.tar.gz "./musique/1.mp3"

Pour extraire plus d’un fichier, spécifiez les suivants l’un après l’autre :

tar xvf file.tar "fichierA" "fichierB" "fichierC"

Par exemple pour extraire 1.mp3, 2.mp3 et 3.mp3 :

tar -xv -f Music.tar.gz "./musique/1.mp3" "./musique/2.mp3" "./musique/3.mp3"
Extraire un fichier spécifique d'un fichier tar

Bien sûr cela fonctionne en spécifiant un répertoire pour extraire le contenu complet d’un repertoire.

Exclure des fichiers ou répertoire dans un fichier tar

Lorsque vous devez compresser un répertoire entier avec la commande TAR et vous ne souhaitez pas inclure des fichiers et des répertoires spécifiques, vous pouvez utiliser l’option -exclude de la commande tar.

Par exemple pour exclure le répertoire /docs.

tar cvzf project.tar.gz --exclude=/docs

Vous pouvez spécifier plusieurs options –exclude l’une à la suite de l’autre.

Lister le contenu d’un fichier à l’aide de l’option -tvf

Pour énumérer le contenu d’une archive tar sans l’extraire, nous pouvons utiliser l’option -t :

tar tvf fichier.tar.gz

L’option verbeuse -v fournira plus de détails sur chaque fichier. Pour les fichiers tar.bz2 / bzip, nous devons utiliser l’option -jv.

Lister le contenu d'un fichier à l'aide de l'option -tvf

Rechercher un fichier dans un fichier tar avec grep

Pour un trouver un fichier spécifique dans un fichier tar, nous pouvons utiliser la commande grep en sortie de tuyau :

tar tvzf fichier.tar.gz | grep superfichier.txt
Rechercher un fichier dans un fichier tar avec grep

Mettre à jour le fichier tar

En utilisant l’option -r, tar ajoute des fichiers aux archives existantes, sans en créer une nouvelle.

tar rvf fichier.tar *.txt

La principale chose à prendre conscience de cette option ne fonctionne qu’avec des archives normales et non avec les archives comprimées.
Cependant, cela peut être fait en effectuant plusieurs étapes simples.
Utilisez la commande gunzip pour décompresser les archives, ajoutez le fichier à l’archive et enfin compressez à nouveau le contenu.

gunzip fichier.tar.gz

tar -rf fichier.tar ./doc/supertexte.txt

gzip fichier.tar

Préserver les dates de fichiers et permissions de fichiers

Par défaut, TAR conserve les autorisations de fichiers et la propriété lors de la création de l’archive.

Pour extraire les autorisations et la propriété des fichiers, vous devrez exécuter tar en root lors de l’extraction, car le changement de dépose des fichiers nécessite généralement des privilèges superutilisateurs.

Les options suivantes peuvent aussi être utilisées :

  • –same-owner : essayez d’extraire des fichiers avec la même propriété que d’exister dans l’archive (valeur par défaut pour superutilisateur)
  • p, –preserve-permissions, –same-permissions : Extraire des informations sur les autorisations de fichier (par défaut pour superutilisateur)
  • –no-same-owner : Extraire des fichiers comme vous-même (** Par défaut pour les utilisateurs ordinaires **)
  • –atime-preserve : préservera l’heure d’accès, mais les temps de création et de modification ne seront généralement pas préservés.
sudo tar --atime-preserve -cvpf archive.tar *

Transférer des fichiers tar par 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 utilisateur@ip tar czf - /source-repertoire/ /destination/fichier.tar.gz

Deuxième syntaxe :

ssh utilisateur@ip 'cd /source-repertoire/ tar -cf - fichier | gzip fichier.tar.gz