Tar est une utilitaire pour archiver et compresser des fichiers sous Linux et les systèmes de type UNIX. Il vous permet de regrouper plusieurs fichiers et répertoires dans un seul fichier archive .tar, tout en préservant les permissions et les structures de répertoires.
Tar est extrêmement utile pour sauvegarder des données, déplacer des groupes de fichiers entre des systèmes, et préparer des distributions de code source. Dans ce guide complet, nous couvrirons les bases de l’utilisation de tar, ainsi que des fonctionnalités et exemples plus avancés.
Vue d’ensemble de Tar
Tar signifie Tape ARchive (Archive sur bande). Il a été à l’origine utilisé pour archiver des données sur des lecteurs de bandes pour le stockage à long terme. Bien que tar puisse toujours écrire des archives sur des lecteurs de bandes, il est plus couramment utilisé avec des fichiers réguliers et des tubes (pipes) aujourd’hui.
Quelques faits clés sur tar :
- Les archives tar regroupent plusieurs fichiers et répertoires dans un seul fichier .tar.
- Les archives peuvent être compressées avec gzip ou bzip2 pour économiser de l’espace.
- Tar préserve les autorisations, les propriétaires, les dates de modification, etc.
- Les archives peuvent s’étendre sur plusieurs bandes/volumes (pour les sauvegardes sur lecteur de bandes).
- Tar est standardisé – les archives créées sur un système UNIX peuvent être extraites sur n’importe quel autre système UNIX compatible.
- Tar est une utilitaire très ancienne qui existe sur toutes les plateformes Linux et UNIX. Des décennies d’utilisation généralisée la rendent très stable et fiable.
Passons en revue quelques termes courants liés à tar :
- Archive – Le fichier .tar créé en regroupant des fichiers avec tar. Ce fichier contient le contenu archivé. Les archives peuvent être compressées avec gzip/bzip2, ce qui est indiqué par les extensions de fichier .tar.gz ou .tar.bz2.
- Paquet – Synonyme d’archive.
- tarball – Une tarball est juste une autre façon de désigner un fichier d’archive .tar.gz ou .tar.bz2.
- Extraire – Le processus qui consiste à défaire une archive et à écrire les fichiers extraits sur le disque.
- Compression – Tar prend en charge la compression optionnelle avec gzip ou bzip2 pour économiser de l’espace. Les archives compressées ont les extensions .tar.gz ou .tar.bz2.
- Ajouter – Ajouter des fichiers à une archive existante. Ne modifie pas le contenu existant.
- Concaténation – Combinaison de deux archives bout à bout.
Maintenant que nous comprenons la terminologie et les bases de tar, passons à quelques exemples d’utilisation.
Créer des archives
Pour créer une nouvelle archive tar, utilisez la commande tar -cvf
. Cela se décompose comme suit :
-c
– Crée une nouvelle archive.-v
– Sortie verbeuse. Liste les fichiers traités.-f <nom-archive>
– Nom du fichier de sortie.
Par exemple :
$ tar -cvf archive.tar /chemin/vers/dossier
Cela archivera le dossier donné de manière récursive dans archive.tar
. Vous pouvez fournir plusieurs chemins de fichiers/dossiers pour ajouter plusieurs entrées :
$ tar -cvf archive.tar /chemin/un /chemin/deux /chemin/trois
Pour compresser l’archive avec gzip, utilisez -czvf
au lieu de seulement -cvf
:
$ tar -czvf archive.tar.gz /chemin/vers/dossier
Pour la compression bzip2, utilisez -cjvf
:
$ tar -cjvf archive.tar.bz2 /chemin/vers/dossier
Vous pouvez contrôler la sortie verbeuse avec -v
. Omettez-le pour masquer les listages de fichiers :
$ tar -cf archive.tar /chemin/vers/dossier
Voir le contenu d’une archive
Pour voir les fichiers contenus dans une archive tar sans l’extraire, utilisez :
$ tar -tf archive.tar
Le -t
liste le contenu.
Pour les archives compressées, vous devez ajouter le drapeau de compression :
$ tar -tzf archive.tar.gz
$ tar -tjf archive.tar.bz2
Extraire des archives
Pour extraire une archive, utilisez -xf
:
$ tar -xf archive.tar
Cela extraira le contenu de archive.tar
dans le répertoire courant en préservant les permissions et attributs.
Pour les archives compressées :
$ tar -xzf archive.tar.gz
$ tar -xjf archive.tar.bz2
Vous pouvez extraire dans un répertoire spécifique avec -C
:
$ tar -xf archive.tar -C /tmp/extraire-ici
Cela extraira l’archive dans /tmp/extraire-ici
.
Ajouter à des archives
Vous pouvez ajouter des fichiers/répertoires à une archive tar existante en utilisant -rvf
au lieu de -cvf
:
$ tar -rvf archive.tar /nouveau/dossier
Cela ajoutera /nouveau/dossier
de manière récursive à archive.tar
sans affecter le contenu existant.
Mettre à jour des archives
Pour mettre à jour des fichiers existants dans une archive ou ajouter de nouveaux fichiers, utilisez -uvf
:
$ tar -uvf archive.tar /chemin/à/mettre/à/jour
Cela ajoutera tous les nouveaux fichiers sous /chemin/à/mettre/à/jour
, et remplacera tous les fichiers existants dans l’archive par les versions mises à jour.
Supprimer des archives
La suppression de fichiers d’archives tar implique de créer une nouvelle archive sans ces fichiers.
Tout d’abord, extraire le contenu de l’archive dans un emplacement temporaire :
$ mkdir /tmp/archive-temp
$ tar -xf archive.tar -C /tmp/archive-temp
Ensuite, supprimez le fichier que vous souhaitez retirer du dossier temporaire.
Enfin, créez une nouvelle archive à partir du dossier temporaire :
$ tar -cf nouvelle-archive.tar /tmp/archive-temp
nouvelle-archive.tar
contiendra maintenant le contenu de l’archive moins le fichier supprimé.
Exclure des fichiers/chemins
Pour exclure certains fichiers/chemins lors de la création d’une archive, utilisez --exclude
:
$ tar -cvf archive.tar /chemin --exclude=/chemin/à/exclure
Cela empêchera /chemin/à/exclure
d’être ajouté à archive.tar
.
Vous pouvez avoir plusieurs options --exclude
. Par exemple, pour exclure tous les fichiers .log :
$ tar -cvf archive.tar /chemin --exclude=*.log
Inclure uniquement les chemins correspondants
Au lieu d’exclure certains chemins, vous pouvez choisir d’inclure uniquement les correspondances en utilisant -T
:
$ tar -cvf archive.tar -T liste-inclusion.txt
Où liste-inclusion.txt
contient des modèles comme *.py
pour ne faire correspondre que certaines extensions.
Options de compression
Par défaut, tar utilise gzip pour la compression. Vous pouvez spécifier des algorithmes différents :
- Pour gz (gzip) :
-z
- Pour bz2 (bzip2) :
-j
- Pour lzma :
-J
- Pour lzop :
-Z
Par exemple :
$ tar -cjf archive.tar.bz2 /chemin # compression bzip2
Vous pouvez également définir le niveau de compression, qui varie généralement de 1 à 9 (plus élevé = meilleure compression mais plus lent) :
$ tar -czf -9 archive.tar.gz /chemin # niveau gzip 9
Vérification d’archive
Une fois qu’une archive est créée, vous pouvez vérifier qu’elle n’a pas été corrompue ou altérée en utilisant -W
:
$ tar -Wvf archive.tar
Cela vérifiera l’intégrité de l’archive.
Pour les archives compressées, ajoutez le drapeau de compression comme d’habitude :
$ tar -Wzvf archive.tar.gz
Tar sur les tubes et accès distant
Tar peut lire/écrire des archives localement ou à distance via les tubes stdin/stdout.
Par exemple, pour créer un tar via SSH :
$ ssh utilisateur@hote 'tar -cf - /chemin/vers/archive' | tar -xvf -
Cela envoie la sortie tar via SSH pour l’extraire localement.
Vous pouvez également extraire une archive et la transférer via SSH pour l’extraction à distance :
$ tar -cf - /chemin/vers/archive | ssh utilisateur@hote 'tar -xvf -'
Le transfert de tar via SSH avec compression/décompression peut accélérer considérablement les transferts :
$ tar czf - /chemin/vers/archive | ssh utilisateur@hote 'tar xvzf -'
Ce ne sont que quelques exemples – tar offre beaucoup de souplesse avec les tubes.
Fractionner/étendre les archives
Si votre archive ne tient pas sur un seul volume comme un lecteur de bande ou un disque, vous pouvez fractionner les archives tar en plusieurs morceaux.
Pour diviser par taille :
$ tar -cvf - --tape-length=1G /chemin | split -b 1G - archive.tar.
Cela divisera archive.tar
en morceaux de 1 Go nommés archive.tar.01
, archive.tar.02
, etc.
Vous pouvez également diviser par nombre de morceaux :
$ tar -cvf - /chemin | split -b 100m -d -a 5 - archive.tar.
Cela divise l’archive en 5 parties (-a 5) nommées archive.tar.01
, archive.tar.02
, … archive.tar.05
.
Pour reconstruire l’archive à partir des morceaux, utilisez cat
pour les concaténer dans l’ordre :
$ cat archive.tar.0* > archive.tar
Puis extrayez comme d’habitude avec tar -xf archive.tar
.
Archiver des fichiers spéciaux
- Pour archiver des fichiers de périphérique comme
/dev/sdb
, utilisez l’option--preserve-devices
dans GNU tar ou--formats=v7
dans tar BSD/Solaris. - Pour suivre avec précision les liens physiques de fichiers et les archiver correctement, utilisez
--hard-dereference
. - Pour archiver les attributs étendus du système (SELinux, ACL, etc.), utilisez
--xattrs
. - Pour conserver les répertoires vides dans l’archive, utilisez
--keep-directory-symlinks
.
Consultez la documentation de tar pour plus de détails sur ces options d’archivage spécialisées et d’autres.
Drapeaux Tar utiles / Exemples
Voici une référence rapide de quelques drapeaux tar utiles et opérations :
# Créer une archive
$ tar -cf archive.tar /chemin/vers/fichiers
# Archive compressée
$ tar -czf archive.tar.gz /chemin/vers/fichiers
# Voir le contenu de l'archive
$ tar -tf archive.tar
# Extraire l'archive
$ tar -xf archive.tar
# Extraire dans un dossier spécifique
$ tar -xf archive.tar -C /tmp
# Ajouter des fichiers à l'archive
$ tar -rvf archive.tar fichier1 fichier2
# Mettre à jour des fichiers dans l'archive
$ tar -uvf archive.tar fichier1
# Supprimer un fichier de l'archive
$ tar --delete -f archive.tar fichier_à_supprimer
# Archiver un dossier distant via SSH
$ ssh utilisateur@hote 'tar -cf - /chemin/vers/archive' | tar -xvf -
# Vérifier l'intégrité de l'archive
$ tar -Wvf archive.tar
# Niveaux de compression 1-9
$ tar -czf -9 archive.tar.gz /chemin
# Diviser l'archive en morceaux
$ tar -cf - /chemin | split -b 100m -d -a 5 - archive.tar.
Cela couvre une large gamme d’exemples d’utilisation de tar. Assurez-vous de consulter les pages de manuel pour votre implémentation tar spécifique pour plus de détails et drapeaux pris en charge.
Conclusion
Tar est un outil essentiel pour travailler avec des groupes de fichiers sur les systèmes Linux/UNIX. Il vous permet de regrouper un nombre quelconque de fichiers, répertoires et fichiers spéciaux dans une seule archive portable qui préserve les autorisations et les attributs, et a de nombreuses utilisations quotidiennes pour les sauvegardes de fichiers, les transferts, les workflows Docker et CI/CD, et la distribution de logiciels. C’est une utilitaire UNIX standard garantie d’être disponible sur les systèmes Linux et macOS.
J’espère que ce guide vous a donné un aperçu général de tar et de la façon de l’utiliser efficacement pour gérer les archives sur un système Linux comme Ubuntu 18.04 / 20.04 / 22.04, CentOS 7 / 8 ou Red Hat 7. Faites-nous savoir sur les commentaires si vous avez d’autres questions sur tar.
Si vous avez des questions ou si vous souhaitez en savoir plus sur cet article, posez votre question dans les commentaires.