Comment utiliser Tar sous Linux (Ubuntu, CentOS, RedHat)

utiliser Tar sous Linux Debian Ubuntu 18.04 / 20.04 / 22.04, CentOS 7 / 8 or Red Hat 7

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.01archive.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.01archive.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.

Laisser un commentaire