Linux / Commande tar : créer, lister et extraire des archives
tar réunit plusieurs fichiers et répertoires dans une archive et peut ensuite en lister ou extraire les membres. Une archive .tar n’est pas nécessairement compressée : les options -z, -j et -J ajoutent respectivement gzip, bzip2 et xz. Avant une extraction, vérifiez les chemins enregistrés et choisissez une destination vide pour éviter les collisions avec vos fichiers.
Choisir une opération et préparer un petit projet
Les exemples concernent GNU tar. Vérifiez tar --version et man tar ; d’autres implémentations peuvent proposer des options différentes. Une archive contient les noms et la structure des éléments, appelés membres, ainsi que les attributs pris en charge.
tar OPERATION [OPTIONS] -f ARCHIVE [FICHIER_OU_REPERTOIRE ...]
-c crée, -t liste et -x extrait. Choisissez l’opération voulue ; -f indique le fichier archive à lire ou à écrire. Dans une forme groupée telle que -czf, le nom de l’archive suit immédiatement ce groupe, car f attend un argument.
Pour suivre un exemple isolé dans Bash, préparez un nouveau répertoire temporaire. Poursuivez seulement si toutes les commandes réussissent et restez dans le même terminal :
demo=$(mktemp -d) &&
cd "$demo" &&
mkdir project restore &&
printf 'hello\n' > project/note.txt &&
printf 'Repertoire de travail : %s\n' "$demo"
Les noms project et restore sont ainsi nouveaux. Gardez le chemin affiché pour retrouver l’essai. Ne créez pas l’archive dans le répertoire que vous archivez : vous risqueriez d’y inclure le fichier de sortie ou de provoquer un avertissement pendant sa modification.
tar -cf bundle.tar project/
tar -tf bundle.tar
Dans ce petit projet, la liste doit inclure project/ et project/note.txt. La création ne retire pas note.txt de la source. En revanche, -c sur une archive existante la recrée : ce n’est pas un ajout de fichiers à son ancien contenu.
Ajouter une compression et comprendre les suffixes
tar -czf project.tar.gz project/
tar -cjf project.tar.bz2 project/
tar -cJf project.tar.xz project/
Ces commandes sont des variantes pour le même projet. Elles nécessitent les programmes de compression correspondants dans l’installation. Le J de xz est une majuscule ; il ne désigne pas le même filtre que le j de bzip2.
| Archive | Option de compression | Rôle |
|---|---|---|
| .tar | Aucune dans l’exemple | Regrouper les membres sans compression ajoutée. |
| .tar.gz | -z | Compresser l’archive avec gzip. |
| .tar.bz2 | -j | Compresser l’archive avec bzip2. |
| .tar.xz | -J | Compresser l’archive avec xz. |
Changer l’extension ne change pas les octets du fichier. Dans ces commandes, l’option choisit le filtre ; GNU tar peut aussi sélectionner une compression d’après le suffixe avec -a. Choisissez une méthode compatible avec l’environnement de restauration et le coût de compression acceptable ; aucun taux de gain fixe n’est garanti.
tar regroupe les membres, tandis que gzip ou xz compresse le flux de l’archive. La documentation GNU sur les archives compressées explique les filtres disponibles et leurs limites. On n’ajoute pas directement des membres à une archive compressée comme à une archive tar non compressée.
Lister, extraire dans un dossier vide et comparer
tar -tzf project.tar.gz
La liste attendue pour l’exemple est :
project/
project/note.txt
-t lit les membres sans les écrire dans le répertoire de restauration. Il peut tout de même décompresser les données pour lire la liste : « sans extraction de fichiers » ne signifie pas « sans lecture de l’archive ». Avec un fichier compressé ordinaire, GNU tar sait souvent reconnaître le filtre en lecture ; l’option -z explicite ici le format attendu.
Le dossier restore créé au début est encore vide. Après inspection de la liste :
tar -xzf project.tar.gz -C restore/ && cmp project/note.txt restore/project/note.txt
-C choisit le répertoire de travail pour l’extraction ; il doit exister. Puisque project/ est enregistré dans l’archive, le résultat est restore/project/note.txt et non restore/note.txt. cmp ne produit normalement rien et renvoie 0 si les deux fichiers de démonstration ont les mêmes octets. && empêche la comparaison si tar signale un échec.
-C peut aussi agir lors de la création sur les chemins de membres qui le suivent. Cela change les noms enregistrés dans l’archive, pas seulement l’endroit où vous consultez les fichiers. La documentation de l’option -C explique son ordre d’application.
Pour un vrai projet, inspectez plus que la présence du fichier archive : vérifiez les messages, le code de sortie et une restauration des éléments importants. Une source qui change pendant la lecture peut produire une sauvegarde incohérente même si certains membres sont lisibles.
Prévenir les écrasements et définir les besoins de restauration
| Option | Effet |
|---|---|
| -c / -t / -x | Créer, lister ou extraire l’archive. |
| -f fichier | Désigner l’archive à lire ou écrire. |
| -z / -j / -J | Choisir gzip, bzip2 ou xz. |
| -C répertoire | Changer le répertoire utilisé pour les membres concernés. |
| -v | Afficher les noms traités. |
Une extraction peut remplacer des fichiers existants. Ne réutilisez pas sans vérification un ancien dossier restore contenant déjà une restauration : choisissez un dossier nouveau et vide. Les noms absolus, les références à un répertoire parent, les liens symboliques et les types de fichiers méritent aussi un examen.
La liste préalable est un contrôle utile, pas une preuve que tout contenu reçu est sûr. Évitez les droits administrateur pour une archive non fiable et utilisez un environnement d’examen adapté au niveau de confiance. Un simple dossier vide réduit les collisions mais n’est pas une isolation complète. Les conseils GNU pour les archives de source non fiable décrivent cette préparation.
Enfin, la copie de quelques fichiers et la comparaison de leurs octets ne vérifient pas tous les propriétaires, permissions, liens ou attributs nécessaires à votre serveur. Définissez ces besoins et testez la restauration avec les outils et droits prévus. Le cours de sauvegarde tar et de validation d’une restauration développe cette méthode.




