
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/dossierCela 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/troisPour compresser l’archive avec gzip, utilisez -czvf au lieu de seulement -cvf :
$ tar -czvf archive.tar.gz /chemin/vers/dossierPour 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/dossierVoir le contenu d’une archive
Pour voir les fichiers contenus dans une archive tar sans l’extraire, utilisez :
$ tar -tf archive.tarLe -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.bz2Extraire des archives
Pour extraire une archive, utilisez -xf :
$ tar -xf archive.tarCela 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.bz2Vous 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/dossierCela 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/à/jourCela 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-tempEnsuite, 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-tempnouvelle-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=*.logInclure 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.txtOù 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 bzip2Vous 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 9Vé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.tarCela 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.gzTar 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.tarPuis 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-devicesdans GNU tar ou--formats=v7dans 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.
