Présentation
Le tar
GNU (abréviation de T singe AR chiver) est l'utilitaire d'archivage le plus largement utilisé dans les systèmes Linux. Disponible directement dans le terminal, le tar
La commande permet de créer, d'extraire et de répertorier le contenu de l'archive.
L'utilitaire est simple et propose de nombreuses options utiles pour compresser des fichiers, gérer des sauvegardes ou extraire une installation brute.
Ce tutoriel montre comment utiliser la commande tar à travers des exemples et les options disponibles.
Prérequis
- Un système exécutant Linux.
- Accès à la ligne de commande/au terminal.
- Un ou plusieurs fichiers pour tester la commande.
Syntaxe de la commande Tar
Le tar
la syntaxe générale de la commande est :
tar <operation mode> <option(s)> <archive> <file(s) or location(s)>
- Mode de fonctionnement indique quelle opération s'exécute sur les fichiers (création, extraction, etc.). La commande autorise et ne nécessite qu'une seule opération.
- Options modifier le mode de fonctionnement et ne sont pas nécessaires. Il n'y a pas de limite au nombre d'options.
- Lesarchives est le nom et l'extension du fichier.
- Le(s) nom(s) de fichier est une liste séparée par des espaces pour l'extraction ou la compression ou un nom correspondant à un caractère générique.
Il existe trois styles de syntaxe possibles pour utiliser les opérations et les options :
1. Style traditionnel , regroupés sans tirets.
Par exemple :
tar cfv <archive> <file(s) or location(s)>
2. Style d'option courte UNIX , en utilisant un seul tiret et des options groupées :
tar -cfv <archive> <file(s) or location(s)>
Alternativement, un tiret avant chaque option :
tar -c -f -v <archive> <file(s) or location(s)>
3. Style d'option longue GNU avec un double tiret et un nom d'option descriptif :
tar --create --file <archive> --verbose <file(s) or location(s)>
Les trois styles peut être utilisé dans un seul tar
commande.
Options de la commande tar
Le tableau suivant décrit le tar
couramment utilisé opérations et options.
Commande | Rôle | Description |
---|---|---|
--create -c | Fonctionnement | Crée une nouvelle archive. |
--list -t | Fonctionnement | Liste le contenu d'une archive. |
--extract -x | Fonctionnement | Extraire un ou plusieurs éléments d'une archive. |
--append -r | Fonctionnement | Ajoute des fichiers à une archive existante. |
--concatenate -A | Fonctionnement | Ajoute des archives à une archive existante. |
--compare --diff -d | Fonctionnement | Compare les membres de l'archive avec les fichiers sur le système. |
--delete | Fonctionnement | Supprime un membre de l'archive. |
--update -u | Fonctionnement | Met à jour l'archive avec de nouveaux fichiers uniquement s'ils ne sont pas dans l'archive et sont plus récents que les fichiers existants. |
--file=<archive> -f <archive> | Option | Spécifie le fichier. |
-C | Option | Change le répertoire. |
--verbose -v | Option | Affiche le fichier tar fonctionne pendant l'exécution. |
--wildcard | Option | Rend les options de recherche génériques. |
--bzip2 -j | Option | Lire ou écrire des archives compressées au format bzip2. |
--gzip -z | Option | Lire ou écrire des archives compressées au format gzip. |
--xz -J | Option | Lire ou écrire des archives compressées au format xz. |
Suivez les exemples de la section suivante pour apprendre comment travailler avec tar .
Exemples de commandes Tar
Les exemples ci-dessous ont les exigences suivantes :
1. Créez un répertoire nommé tar_examples et accédez au répertoire :
mkdir tar_examples && cd tar_examples
2. Créez un autre répertoire appelé fichiers dans tar_examples et entrez dans ce répertoire :
mkdir files && cd files
3. Créez des fichiers pour remplir les fichiers répertoire :
touch file{0..100}.txt
Pour revenir au répertoire parent, utilisez :
cd ..
Tous les exemples ci-dessous fonctionnent à partir des tar_examples répertoire.
1. Créer une archive
La syntaxe de création d'une archive dépend du type d'archive. Pour créer une archive, utilisez tar
avec le -c
ou --create
opération.
Créer une archive tar
Pour créer une archive tar (également appelée tarball), utilisez :
tar cf <archive name>.tar <file(s) or location(s)>
Par exemple, archivez les fichiers répertoire :
tar cf files.tar files
La sortie répertorie chaque fichier ajouté à l'archive. Affichez le contenu du répertoire pour voir le fichier.tar créé archive :
tar cf files.tar files
La sortie répertorie chaque fichier ajouté à l'archive. Affichez le contenu du répertoire pour voir le fichier.tar créé archive :
ls -l
Créer une archive compressée tar.gz
Ajoutez le -z
option pour créer un fichier GNUzip (gzip) compressé :
tar czf <archive name>.tar.gz <file(s) or location(s)>
Par exemple :
tar czf files.tar.gz files
La taille du fichier est inférieure à celle d'un fichier tarball normal et du répertoire d'origine.
Créer une archive compressée tar.bz2
Le bzip2 est un programme de compression de fichiers et une alternative à gzip.
Pour créer un tar.bz2 fichier, ajoutez le -j
balise :
tar cjf <archive name>.tar.bz2 <file(s) or location(s)>
Par exemple :
tar cjf files.tar.bz2 files
Le bzip2 a un taux de compression plus élevé et prend plus de temps que gzip.
Créer une archive tar.xz
Utilisez le -J
tag pour compresser les archives au format tar.xz :
tar cJf <archive name>.tar.xz <file(s) or location(s)>
Par exemple :
tar cJf files.tar.xz files
La compression xz prend le plus de temps par rapport à gzip et bz2. Cependant, avec des fichiers plus volumineux, xz a les taux de compression les plus élevés.
2. Supprimer les fichiers après la création
Pour supprimer les fichiers du disque après l'archivage, utilisez le --remove-files
option à la fin :
tar cf <archive> <file(s) or location(s)> --remove-files
Par exemple, créez une archive tar avec les fichiers répertoire et supprimez-le du disque en une seule commande :
tar cf files.tar files --remove-files
Vérifiez le contenu du répertoire pour confirmer que l'opération fonctionne correctement.
3. Extrait de l'archive
L'extraction d'une archive ou d'une archive compressée utilise le -x
ou --extract
opération avec tar
. Les options supplémentaires dépendent du type de fichier et de l'endroit où tar doit extraire les composants.
Extraire de l'archive tar
La syntaxe générale pour extraire d'une archive tar est :
tar xf <archive name>.tar
Par défaut, tar extrait tous les composants dans le répertoire courant. Pour indiquer où extraire les composants, ajoutez le -C
option et indiquez le chemin :
tar xfC <archive name>.tar <path>
Par exemple, pour créer un répertoire nommé extrait_tar et extrayez les fichiers de files.tar , exécutez :
mkdir extracted_tar && tar xfC files.tar extracted_tar
La commande ne génère pas de message de confirmation. Vérifiez le contenu du répertoire pour confirmer que les composants ont été extraits avec succès.
Extraire de l'archive tar.gz
Utilisez le -z
option pour extraire un fichier tar.gz :
tar xzf <archive name>.tar.gz
La commande extrait le contenu du répertoire courant. Ajoutez le -C
option pour spécifier l'emplacement :
tar xzfC <archive name>.tar.gz <location>
Par exemple, créez un nouveau répertoire nommé extracted_gz et extrayez les files.tar.gz contenu :
mkdir extracted_gz && tar xzfC files.tar.gz extracted_gz
Les archives compressées tar.gz prennent le moins de temps à extraire par rapport aux autres formats de compression.
Extraire de l'archive tar.bz2
Pour extraire des fichiers d'une archive compressée tar.bz2 dans le répertoire courant, utilisez :
tar xjf <archive name>.tar.bz2
Extrayez les archives tar.bz2 dans un répertoire spécifique avec :
tar xjfC <archive name>tar.bz2 <location>
Par exemple, créez un répertoire et extrayez le contenu de files.tar.bz2 :
mkdir extracted_bz2 && tar xjfC files.tar.bz2 extracted_bz2
Extraire de l'archive tar.xz
Ajoutez le -J
option pour extraire des archives compressées tar.xz. La syntaxe à extraire dans le répertoire courant est :
tar xJf <archive name>.tar.xz
Pour extraire le contenu dans un répertoire spécifique, utilisez le -C
option et ajoutez le chemin :
tar xJfC <archive name>.tar.xz <location>
Par exemple, créez un répertoire et extrayez les files.tar.xz contenu :
mkdir extracted_xz && tar xJfC files.tar.xz extracted_xz
Le format de compression xz est le juste milieu entre gz et bz2 en ce qui concerne le temps d'extraction.
4. Écraser le contrôle
Les contrôles d'écrasement de tar gèrent les situations où les noms de fichiers dans l'archive chevauchent des fichiers dans le répertoire de travail.
Les trois actions de remplacement possibles sont :
1. Remplacez les fichiers du répertoire de travail :
tar xf <archive> <Optional file(s) or location(s)> --overwrite
2. N'écrasez pas les fichiers du répertoire de travail :
tar xf <archive> <Optional file(s) or location(s)> --keep-old-files
Si les fichiers existent déjà, tar n'effectue pas l'extraction.
3. Extrayez les fichiers uniquement s'ils sont plus récents que les fichiers existants :
tar xf <archive> <Optional file(s) or location(s)> --keep-newer-files
Si les fichiers du répertoire de travail sont plus récents ou du même âge, tar n'extrait pas les fichiers.
5. Lister le contenu des archives
Utilisez la commande suivante pour lister le contenu d'une archive :
tar tf <archive>
L'option fonctionne pour toute extension de fichier contenant tar.
Par exemple, listez les fichiers et répertoires dans le fichier files.tar archive :
tar tf files.tar.gz
La sortie répertorie tous les contenus stockés dans l'archive.
6. Rechercher un fichier dans une archive
Il existe deux manières de localiser un contenu spécifique à l'aide de tar :
1. Le -t
L'option permettant de lister les fichiers dans une archive est pratique pour localiser des fichiers spécifiques. Ajoutez le nom (ou les noms) de fichier après la commande :
tar tf <archive> <file(s)>
Par exemple, pour localiser file50.txt dans les files.tar.gz archiver, exécuter :
tar tf files.tar.gz file/file50.txt
L'option nécessite de connaître le chemin d'accès possible au fichier.
2. Utilisez le tar
avec la commande grep pour filtrer la sortie :
tar tf <archive> | grep <file(s)>
Par exemple :
tar tf files.tar.gz | grep file50.txt
L'option ne nécessite pas de connaître le chemin d'accès possible au fichier.
7. Rechercher plusieurs fichiers dans une archive
Utilisez le --wildcards
option pour faire correspondre plusieurs instances de fichiers. Par exemple :
tar tf files.tar.gz --wildcards file/files5*.txt
Appliquez une correspondance générique lorsque les fichiers ont un nom similaire ou pour filtrer un certain type de fichier.
8. Exclure les fichiers lors de la création d'une archive
Pour exclure certains fichiers de l'archive lors de la création, ajoutez l'option suivante :
tar cf <archive> --exclude='<pattern>' <files(s) or location(s)>
Par exemple, créez une archive à partir du répertoire des fichiers et excluez tous les fichiers .txt :
tar cf files.tar --exclude='*.txt' files
Lister le contenu de l'archive :
tar tf files.tar
La sortie n'affiche aucun fichier .txt, uniquement les fichiers répertoire dans l'archive.
9. Extraire un seul fichier de l'archive
Évitez d'extraire toute l'archive si vous avez besoin d'un ou plusieurs fichiers.
Pour obtenir un seul fichier à partir d'une archive :
1. Lister le contenu et vérifier si le fichier existe :
tar tf files.tar | grep file100.txt
La sortie imprime le chemin d'accès au fichier nécessaire pour l'étape suivante.
2. Extrayez le fichier spécifique avec :
tar xf files.tar files/file100.txt
La commande crée le répertoire fichiers avec uniquement le fichier indiqué. Suivez les mêmes étapes pour extraire un seul fichier à partir d'archives compressées en ajoutant la balise appropriée. Par exemple, utilisez le -z
option pour extraire d'un fichier tar.gz.
10. Option détaillée
L'option détaillée affiche des informations supplémentaires après l'exécution d'une commande tar. Ajouter -v
ou --verbose
à n'importe quelle opération pour voir le résultat.
Par exemple, créez un fichier tar.gz et ajoutez -v
:
tar czfv files.tar.gz files
La sortie montre chaque fichier tel qu'il est ajouté à l'archive.
Certaines commandes tar affichent des informations supplémentaires lorsque vous ajoutez le -v
marquer deux fois. Par exemple, essayez d'ajouter des fichiers à une archive avec -vv
:
tar czfvv files.tar.gz files
La sortie imprime un long format de liste et ressemble à l'exécution de la commande ls -l.
11. Supprimer des archives
Pour supprimer de l'archive, localisez le fichier que vous souhaitez supprimer, par exemple :
tar tf files.tar | grep file100.txt
Ensuite, supprimez le fichier en utilisant le --delete
balise :
tar --delete -f files.tar files/file100.txt
L'option de suppression ne fonctionne pas sur compressé formats de fichier.
12. Ajouter des fichiers à archiver
Ajouter des fichiers à une archive existante en utilisant le -r
étiqueter. La syntaxe est :
tar rf <archive name>.tar <file(s) or location(s)>
Par exemple, ajoutez le fichier compressé files.tar.gz fichier dans files.tar archive :
tar rf files.tar files.tar.gz
Les archives déjà compressées ne peuvent pas être mises à jour, donc la syntaxe ne fonctionne que pour les fichiers tarball .
13. Combiner les archives
Utilisez le --concatenate
ou -A
possibilité de combiner plusieurs archives. La syntaxe de base est :
tar Af <archive to extend> <archive to extend with>
Par exemple, copiez le fichier files.tar existant fichier à l'aide de la commande cp :
cp files.tar files_copy.tar
Ensuite, concaténez les deux archives :
tar Af files.tar files_copy.tar
Pour confirmer que la concaténation a fonctionné, vérifiez la taille du fichier.
14. Différence entre archive et fichiers
Pour vérifier la différence entre une archive et des fichiers sur disque, utilisez le -d
balise :
tar df <archive name>
La commande recherche le même contenu et le compare à ce qui se trouve dans l'archive. L'option vérifie uniquement les fichiers existants et ignore tous les fichiers nouvellement ajoutés.
Les étapes ci-dessous montrent comment utiliser le -d
, --diff
, ou --compare
tag avec tar
:
1. Créez une archive tar :
tar cf files.tar files
2. Comparez l'archive avec le répertoire existant :
tar df files.tar
La sortie n'affiche rien, ce qui signifie qu'il n'y a aucune différence entre les fichiers existants.
3. Ajouter du texte à un fichier existant dans les fichiers répertoire :
echo 'Hello' >> files/file0.txt
4. Comparez à nouveau l'archive au répertoire existant :
tar df files.tar
Cette fois, la sortie montre des différences dans l'heure de modification et la taille d'un fichier spécifique. La comparaison donne un aperçu de toutes les modifications apportées au système après la création de l'archive.
15. Mettre à jour les fichiers dans l'archive
Mettez à jour les fichiers existants dans l'archive avec une version plus récente à partir du disque avec le -u
choix :
tar uf <archive> <file(s) or location(s)>
Par exemple, mettez à jour le fichier files.tar archiver avec un fichier texte modifié :
tar uf files.tar files
Vérifiez le contenu tar du fichier modifié :
tar tfv files.tar | grep files0.txt
La commande met à jour l'archive avec les fichiers modifiés sans aucun écrasement.
16. Heure modifiée
Tar offre diverses options pour modifier l'horodatage du fichier. Définissez une date personnalisée lors de la création d'une archive en ajoutant le --mtime
option et en indiquant une date :
tar cf <archive> <file(s) or location(s)> --mtime=YYYY-MM-DD
Par exemple, créez une archive et définissez la date au 1er janvier 1999 :
tar cf files.tar files --mtime=1999-01-01
Vous pouvez également extraire les fichiers avec la date et l'heure actuelles :
tar xf files.tar -m
Une fonctionnalité utile lorsque vous travaillez avec le temps est de filtrer les fichiers modifiés après une date spécifique. Par exemple, pour extraire des fichiers créés après une date, utilisez le --newer-mtime
option et ajoutez la date :
tar xf <archive> --newer-mtime=YYYY-MM-DD
17. Autorisations
Il existe deux façons de contrôler les autorisations de fichiers avec tar lors de l'extraction d'une archive :
1. Conserver les autorisations d'origine :
tar xf <archive name> --preserve-permissions
Les autorisations sont celles indiquées dans le fichier avant la création de l'archive.
2. Modifiez les autorisations à la valeur umask par défaut :
tar xf <archive name> --no-same-permissions
Les fichiers prennent les autorisations Linux par défaut.
18. Propriété du fichier
Tar permet la configuration de la propriété des fichiers. Par exemple, pour définir le propriétaire du fichier lors de la création d'une archive, ajoutez le --owner
et --group
options et fournissez des valeurs pour chacune :
tar cf <archive> <file(s) or location(s)> --owner=<value> --group=<value>
La valeur du propriétaire représente l'UID (ID utilisateur) alors que la valeur du groupe est le GID (ID de groupe). Pour trouver ces valeurs pour un utilisateur, exécutez :
id <username>
Par exemple, créez une archive et définissez la propriété sur root :
tar cf files.tar files --owner=0 --group=0
Tar permet de conserver la propriété lors de l'extraction d'une archive. Pour ce faire, ajoutez le --same-owner
option à la fin :
tar xf <archive> --same-owner
19. Écrire dans un programme externe
Le --to-command
L'option indique à tar d'envoyer chaque fichier extrait vers la sortie standard pour un programme externe. La syntaxe de base est :
tar xf <archive> --to-command='<command>'
Par exemple, extrayez le files.tar contents et redirigez les noms de fichiers sous forme de répertoires :
tar xf files.tar --to-command='mkdir $TAR_FILENAME'
La commande crée des répertoires nommés d'après chaque fichier extrait. Pour plus d'informations et les variables d'environnement Linux disponibles, visitez la page du manuel.
20. Créer des sauvegardes quotidiennes
Pour automatiser les sauvegardes quotidiennes, créez un script bash et ajoutez les lignes suivantes :
tar czf backup-$(date +%Y%m%d).tar.gz files
find backup* -mtime +1 -delete
La commande tar crée une archive compressée, tandis que la commande find recherche les fichiers de sauvegarde de plus d'un jour. Changez le +1
paramètre à +7
pour la semaine ou +31
pour les sauvegardes mensuelles.