Installé avec le paquet tar
Voir aussi : xz, unxz, gzip, gunzip, bzip2, bunzip2, zip, unzip et cpio
Rmq : La taille d’une archive non compressée tar est la somme de la taille des fichiers et dossiers contenus dans l’archive.
1. Archives non compressées
2. Archivage distant via SSH
3. Archives compressées GZIP
4. Archives compressées BZIP2
5. Archives compressées XZ
Afficher la version de tar
tar --version
ou
apt-cache policy tar
Options utiles
-v : mode verbeux
-c : crée une nouvelle archive
-x : extrait les fichiers d’une archive
-p : préserve les permissions d’origine (par défaut si exécuté par root)
-t : affiche la liste des fichiers contenus dans une archive
-f : spécifie le nom de l’archive, à la place de la sortie standard (-f – est redondant), cette option doit être positionnée en dernier
-C : exécute la commande à partir du répertoire spécifié
-z (--gzip) : compression au format gzip
-j (--bzip2) : compression au format bzip2
-J (--xz) : compression au format xz
-P : n’enlève pas les « / » des noms de fichiers
-r : (mode append) sauvegarde des fichiers à la fin d’une archive
-d : cherche les différences entre les fichiers indiqués et ceux contenus dans le fichier archive
-h : suit les liens symboliques ; sauvegarde et restaure les fichiers pointés
-m : ne restaure pas la date de modification du fichier extrait
-A : ajoute bout à bout plusieurs fichiers tar à une archive
-g : gère les sauvegardes incrémentielles dans le nouveau format GNU
--files-from (-T) : obtient la liste des fichiers à extraire ou à créer depuis un fichier référence
--exclude-from (-X) : obtient la liste des fichiers ou de motifs à exclure depuis un fichier référence
--exclude-tag-all : exclut du traitement les dossiers contenant un fichier spécifique
--delete : (mode suppression) supprime du contenu de l’archive (non exploitable avec les lecteurs de bandes !)
--wildcards : permet de filtrer une extraction à partir d’un pattern
--keep-old-files (-k) : ne remplace pas les fichiers existants lors de l’extraction, les traite comme des erreurs
--keep-newer-files : ne remplace pas les fichiers existants si leur version est plus récente que leur copie dans l’archive
Archives non compressées
Afficher le contenu d’une archive
tar -tf archive.tar
L’arborescence de l’archive sera affichée.
tar -tvf archive.tar
Le mode verbeux affiche également les informations relatives aux fichiers/dossiers (droits, propriétaire, date de modification, etc.).
ex :
# tar -tvf archive.tar
drwxr-xr-x root/root 0 2016-10-11 13:11 source/
-rw-r--r-- root/root 0 2016-10-11 13:11 source/file1.txt
-rw-r--r-- root/root 0 2016-10-11 13:11 source/file2.txt
-rw-r--r-- root/root 0 2016-10-11 13:11 source/file3.txt
Créer une archive non compressée
A partir d’une liste de fichiers :
tar -cvf archive.tar fichiers
Ici les fichiers se trouvent dans le répertoire courant.
# tar -cvf archive.tar file1.txt file2.txt file3.txt file1.txt file2.txt file3.txt # tar -tf archive.tar file1.txt file2.txt file3.txt
A partir d’une liste de dossiers :
tar -cvf archive.tar dossiers
# tar -cvf archive.tar source/ source/ source/file1.txt source/file2.txt source/file3.txt # tar -tf archive.tar source/ source/file1.txt source/file2.txt source/file3.txt
Ici un chemin relatif est fourni, l’archive générée comprend le dossier et les fichiers.
# tar -cvf archive.tar /home/adminsys/source/ tar: Suppression de « / » au début des noms des membres /home/adminsys/source/ /home/adminsys/source/file1.txt /home/adminsys/source/file2.txt /home/adminsys/source/file3.txt # tar -tf archive.tar home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt
Par défaut, même si un chemin absolu est précisé, la racine est retirée du nom complet des fichiers de l’archive.
# tar -cPvf archive.tar /home/adminsys/source/ /home/adminsys/source/ /home/adminsys/source/file1.txt /home/adminsys/source/file2.txt /home/adminsys/source/file3.txt # tar -tf archive.tar tar: Suppression de « / » au début des noms des membres /home/adminsys/source/ /home/adminsys/source/file1.txt /home/adminsys/source/file2.txt /home/adminsys/source/file3.txt
Ici un chemin absolu est fourni, l’archive générée comprend tous les dossiers jusqu’aux fichiers, avec la racine qui est préservée avec l’option -P.
# tar -cvf archive.tar -C /home/adminsys/ source1/ source2/ source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt # tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt
Ci-dessus, par l’option -C, on précise à partir de quel dossier on procédera à l’archivage (par défaut il s’agit du répertoire courant). Les dossiers à archiver qui suivent devront donc se trouver dans ce dossier. De plus, l’archive générée se trouvera dans ce dossier.
Autre exemple avec l’option -C : sauvegarde et extraction à partir de la racine
# tar -cvf /home/adminsys/archive.tar -C / mnt/ tmp/ mnt/ mnt/file1.txt tmp/ tmp/file2.txt # tar -xvf /home/adminsys/archive.tar -C / mnt/ mnt/file1.txt tmp/ tmp/file2.txt
Ci-dessus on se place à la racine pour sauvegarder les dossier mnt/ et tmp/ et on spécifie le chemin absolu de l’archive à créer pour que cette dernière ne soit pas créée à la racine.
Extraire une archive non compressée
tar -xvf archive.tar
Le contenu de l’archive est extrait dans le répertoire courant.
Si l’archive contient une arborescence de dossiers, ceux-ci seront recréés à partir du répertoire courant.
Si des fichiers/dossiers absents de l’archive existent, ils seront préservés lors de l’extraction.
Si l’archive est détarée dans le répertoire courant, alors elle sera supprimée après extraction. Pour garder l’archive utilisée, il faut la détarer dans un autre répertoire avec l’option -C
# tar -tf archive.tar source/file1.txt source/file2.txt source/file3.txt # tar -xvf archive.tar source/file1.txt source/file2.txt source/file3.txt
Pour extraire une arborescence débutant à la racine, il est alors nécessaire de se placer à la racine, comme cette dernière a été supprimée lors de la création de l’archive.
# tar -tf archive.tar home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt # cd / # tar -xvf /home/adminsys/archive.tar home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt # cd /home/adminsys/
Equivaut à :
# tar -tf archive.tar home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt # (cd / ; tar -xvf /home/adminsys/archive.tar) home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt
Equivaut aussi à :
# tar -tf archive.tar home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt # tar xvf archive.tar -C / home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt
tar -xPvf archive.tar
Avec l’option -P la racine est préservée, l’archive peut alors être extraite depuis son emplacement, son contenu étant restauré en partant de la racine.
# tar -tf archive.tar tar: Suppression de « / » au début des noms des membres /home/adminsys/source/ /home/adminsys/source/file1.txt /home/adminsys/source/file2.txt /home/adminsys/source/file3.txt # tar -xPvf archive.tar /home/adminsys/source/ /home/adminsys/source/file1.txt /home/adminsys/source/file2.txt /home/adminsys/source/file3.txt
tar -xvf archive.tar -C target/
Il est ainsi possible de préciser le dossier d’extraction de l’archive.
Par exemple, on peut préciser la racine « / » ou tout autre dossier.
ex 1 : Extraction dans un dossier lambda
# tar -tf archive.tar source/ source/file1.txt source/file2.txt source/file3.txt # tar -xvf archive.tar -C temp/ source/ source/file1.txt source/file2.txt source/file3.txt # tree temp/ temp/ └── source ├── file1.txt ├── file2.txt └── file3.txt 1 directory, 3 files
ex 2 : Extraction à la racine
# tar -tf archive.tar home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt # tar xvf archive.tar -C / home/adminsys/source/ home/adminsys/source/file1.txt home/adminsys/source/file2.txt home/adminsys/source/file3.txt
Ajouter des fichiers ou dossiers à une archive non compressée existante
tar -rf archive.tar fichiers/dossiers
ex :
# tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt # tar -rf archive.tar source2/ source3/ # tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt source3/ source3/file7.txt source3/file8.txt source3/file9.txt
Ajouter le contenu d’une archive à une archive existante
tar -Af base.tar complement.tar
ex :
# tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt # tar -Af archive.tar source2.tar # tar -Af archive.tar source3.tar # tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt source3/ source3/file7.txt source3/file8.txt source3/file9.txt
Le contenu de source2.tar et source3.tar a été ajouté à l’archive de base archive.tar.
Supprimer des fichiers ou dossiers d’une archive non compressée existante
tar --delete -f archive.tar fichiers/dossiers
ex :
# tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt source3/ source3/file7.txt source3/file8.txt source3/file9.txt # tar --delete -f archive.tar source2/file6.txt source3/ # tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt
Restaurer uniquement certains fichiers d’une archive non compressée
tar -xvf archive.tar fichiers/dossiers
ex :
# tree source?/ source1/ source2/ source3/ 0 directories, 0 files # tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt source3/ source3/file7.txt source3/file8.txt source3/file9.txt # tar -xvf archive.tar source1/ source2/file4.txt source3/file9.txt source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/file4.txt source3/file9.txt # tree source?/ source1/ ├── file1.txt ├── file2.txt └── file3.txt source2/ └── file4.txt source3/ └── file9.txt 0 directories, 5 files
Spécifier un fichier référence en entrée :
tar -xvf archive.tar --files-from liste
On peut ainsi spécifier un fichier en entrée listant les fichiers ou dossiers à restaurer.
ex :
# tree source1/ source2/ source1/ source2/ 0 directories, 0 files # tar -tf archive.tar source1/ source1/file2.txt source1/file1.txt source1/file3.txt source2/ source2/file6.txt source2/file5.txt source2/file4.txt # cat liste.txt source1/file2.txt source2/file5.txt # tar -xvf archive.tar --files-from liste.txt source1/file2.txt source2/file5.txt # tree source1/ source2/ source1/ └── file2.txt source2/ └── file5.txt 0 directories, 2 files
Ne pas écraser les fichiers existants
tar -xvf archive.tar --keep-old-files
Ne pas écraser les fichiers existants plus récents ou de même date
tar -xvf archive.tar --keep-newer-files
Utilisation des wildcards lors de l’extraction
tar -xvf archive.tar --wildcards 'pattern'
Les wildcards peuvent être listées telles que '*.png' '*.jpg' par exemple.
Nous pouvons spécifier le dossier d’extraction :
tar -xvf archive.tar -C target --wildcards 'pattern'
L’exemple ci-dessous ne restaure que les fichier PNG contenus dans l’archive :
# tree source1/ source2/ source1/ source2/ 0 directories, 0 files # tar -tf archive.tar source1/ source1/file1.png source1/file2.txt source1/file3.txt source2/ source2/file4.png source2/file5.txt source2/file6.txt # tar -xvf archive.tar --wildcards '*.png' source1/file1.png source2/file4.png # tree source1/ source2/ source1/ └── file1.png source2/ └── file4.png 0 directories, 2 files
Utilisation des exclusions
Exclusion d’un motif :
Pour l’archivage :
tar -cvf archive.tar dossiers|fichiers --exclude 'pattern'
ex :
# tree source1/ source2/ source1/ ├── file1.png ├── file2.txt └── file3.txt source2/ ├── file4.png ├── file5.txt └── file6.txt 0 directories, 6 files # tar -cvf archive.tar source1/ source2/ --exclude '*.txt' source1/ source1/file1.png source2/ source2/file4.png # tar -tf archive.tar source1/ source1/file1.png source2/ source2/file4.png
Pour l’extraction :
tar -xvf archive.tar --exclude 'pattern'
ex :
# tree source1/ source2/ source1/ source2/ 0 directories, 0 files # tar -tf archive.tar source1/ source1/file1.png source1/file2.txt source1/file3.txt source2/ source2/file4.png source2/file5.txt source2/file6.txt # tar -xvf archive.tar --exclude='*.txt' source1/ source1/file1.png source2/ source2/file4.png # tree source1/ source2/ source1/ └── file1.png source2/ └── file4.png 0 directories, 2 files
Exclusion à partir d’un fichier de référence :
Pour l’archivage :
tar -cvf archive.tar dossiers|fichiers --exclude-from liste
ex1 : liste de fichiers
# tree source1/ source2/ source1/ ├── file1.png ├── file2.txt └── file3.txt source2/ ├── file4.png ├── file5.txt └── file6.txt 0 directories, 6 files # cat liste.txt source1/file2.txt source2/file5.txt # tar -cvf archive.tar source1/ source2/ --exclude-from liste.txt source1/ source1/file1.png source1/file3.txt source2/ source2/file6.txt source2/file4.png
ex2 : liste d’extensions
# tree source1/ source2/ source1/ ├── file1.png ├── file2.jpg └── file3.txt source2/ ├── file4.png ├── file5.jpg └── file6.txt 0 directories, 6 files # cat liste.txt *.png *.jpg # tar -cvf archive.tar source1/ source2/ --exclude-from liste.txt source1/ source1/file3.txt source2/ source2/file6.txt
Pour l’extraction :
tar -xvf archive.tar --exclude-from liste
ex1 : liste de fichiers
# tar -tf archive.tar source1/ source1/file1.png source1/file2.jpg source1/file3.txt source2/ source2/file6.txt source2/file4.png source2/file5.jpg # cat liste.txt source1/file1.png source1/file2.jpg source2/file4.png source2/file5.jpg # tar -xvf archive.tar --exclude-from liste.txt source1/ source1/file3.txt source2/ source2/file6.txt
ex2 : liste d’extensions
# tar -tf archive.tar source1/ source1/file1.png source1/file2.jpg source1/file3.txt source2/ source2/file4.png source2/file5.jpg source2/file6.txt # cat liste.txt *.png *.jpg # tar -xvf archive.tar --exclude-from liste.txt source1/ source1/file3.txt source2/ source2/file6.txt
Exclusion à partir d’une étiquette lors de l’archivage :
tar -cvf archive.tar dossiers|fichiers --exclude-tag-all 'tag'
Tout dossier contenant le fichier tag sera exclu de l’archivage. Ce dossier mais aussi son contenu récursif seront occultés.
ex :
# tree -a source?/ source1/ ├── file1.txt ├── file2.txt └── .NOBACKUP source2/ ├── file3.txt ├── file4.txt └── .NOBACKUP source3/ ├── file5.txt └── file6.txt 0 directories, 8 files # tar -cvf archive.tar source?/ --exclude-tag-all '.NOBACKUP' tar: source1/ : contient une étiquette de répertoire cache .NOBACKUP ; répertoire non archivé tar: source2/ : contient une étiquette de répertoire cache .NOBACKUP ; répertoire non archivé source3/ source3/file6.txt source3/file5.txt
Ci-dessus, le fichier caché .NOBACKUP permet d’exclure de l’archivage tous les dossiers dans lesquels il est présent.
Comparer le contenu d’une archive avec des fichiers ou dossiers indiqués
tar -df archive.tar
ou
tar -df archive.tar fichiers
ou
tar -df archive.tar dossiers
ex :
# tar -tf archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt source3/ source3/file7.txt source3/file8.txt source3/file9.txt # tar -df archive.tar source1/ source2/ source3/ source1/file1.txt: La date de modification est différente. source1/file1.txt: La taille est différente.
Extraire seulement certains niveaux de l’arborescence d’une archive
tar -xvf archive.tar --strip-components lvl
Le paramètre appelé ici lvl spécifie à partir de quel niveau l’archive sera extraite (Si 2 alors les niveaux 0 et 1 seront occultés).
Par défaut, l’archive est extraite à partir du niveau 0.
ex :
# tar -tf archive.tar lvl0/ lvl0/lvl11/ lvl0/lvl11/lvl21/ lvl0/lvl11/lvl21/file31.txt lvl0/lvl12/ lvl0/lvl12/lvl22/ lvl0/lvl12/lvl22/file32.txt lvl0/lvl13/ lvl0/lvl13/lvl23/ lvl0/lvl13/lvl23/file33.txt # tar -xvf archive.tar -C temp/ --strip-components 3 lvl0/lvl11/lvl21/file31.txt lvl0/lvl12/lvl22/file32.txt lvl0/lvl13/lvl23/file33.txt # ls -1 temp/ file31.txt file32.txt file33.txt
Archiver en suivant les liens symboliques
tar -cvhf archive.tar fichiers/dossiers
ex :
# ls -l source/testlink.txt
lrwxrwxrwx 1 root root 16 oct. 11 14:32 source/testlink.txt -> /tmp/testsrc.txt
Par défaut, seul le lien est archivé :
# tar -cvf archive.tar source/ source/ source/testlink.txt source/file1.txt source/file2.txt source/file3.txt # tar -tvf archive.tar drwxr-xr-x root/root 0 2016-10-11 14:32 source/ lrwxrwxrwx root/root 0 2016-10-11 14:32 source/testlink.txt -> /tmp/testsrc.txt -rw-r--r-- root/root 0 2016-10-11 13:11 source/file1.txt -rw-r--r-- root/root 0 2016-10-11 13:11 source/file2.txt -rw-r--r-- root/root 0 2016-10-11 13:11 source/file3.txt
Lors de l’extraction, le lien sera restauré et pointera sur la version actuelle du fichier pointé.
Avec l’option -h, le fichier pointé est archivé et non seulement le lien :
# tar -cvhf archive.tar source/ source/ source/testlink.txt source/file1.txt source/file2.txt source/file3.txt # tar -tvf archive.tar drwxr-xr-x root/root 0 2016-10-11 14:32 source/ -rw-r--r-- root/root 0 2016-10-11 14:31 source/testlink.txt -rw-r--r-- root/root 0 2016-10-11 13:11 source/file1.txt -rw-r--r-- root/root 0 2016-10-11 13:11 source/file2.txt -rw-r--r-- root/root 0 2016-10-11 13:11 source/file3.txt
Le fichier archivé sera donc une copie à un instant t (moment de l’archivage) du fichier pointé.
Lors de l’extraction, il n’y aura plus de lien symbolique puisque c’est la copie du fichier qui sera restaurée.
Ne pas restaurer les dates de modifications
tar -xvmf archive.tar
ex :
L’exemple se base sur des fichiers dont la date de modification est 13h11.
# ls -la source/
total 8
drwxr-xr-x 2 root root 4096 oct. 11 16:19 .
drwxr-xr-x 27 adminsys adminsys 4096 oct. 11 16:25 ..
-rw-r--r-- 1 root root 0 oct. 11 13:11 file1.txt
-rw-r--r-- 1 root root 0 oct. 11 13:11 file2.txt
-rw-r--r-- 1 root root 0 oct. 11 13:11 file3.txt
Par défaut, la date de modification est préservée lors de la restauration :
# tar -xvf archive.tar source/ source/file1.txt source/file2.txt source/file3.txt # ls -l source/ total 0 -rw-r--r-- 1 root root 0 oct. 11 13:11 file1.txt -rw-r--r-- 1 root root 0 oct. 11 13:11 file2.txt -rw-r--r-- 1 root root 0 oct. 11 13:11 file3.txt
Avec l’option -x, la date de modification est celle de l’extraction (effectuée ici à 16h26) :
# tar -xvmf archive.tar source/ source/file1.txt source/file2.txt source/file3.txt # ls -l source/ total 0 -rw-r--r-- 1 root root 0 oct. 11 16:26 file1.txt -rw-r--r-- 1 root root 0 oct. 11 16:26 file2.txt -rw-r--r-- 1 root root 0 oct. 11 16:26 file3.txt
Archiver à partir d’un fichier liste de référencement
tar -cvf archive.tar --files-from liste
ex :
Prenons un fichier liste.txt contenant la liste de 3 dossiers :
# cat liste.txt
source1/
source2/
source3/
L’archive générée contiendra les fichiers des 3 dossiers listés dans le fichier liste.txt :
# tar -cvf archive.tar --files-from liste.txt
source1/
source1/file2.txt
source1/file1.txt
source1/file3.txt
source2/
source2/file6.txt
source2/file5.txt
source2/file4.txt
source3/
source3/file7.txt
source3/file9.txt
source3/file8.txt
Archiver à partir de l’entrée standard
ls -1p | grep -v / | tar -cvf /path/archive.tar --files-from -
Archivera tous les fichiers visibles du répertoire courant (et uniquement les fichiers). L’archive générée ne doit pas se trouver dans le répertoire courant puisque c’est justement celui qui sert de référence à l’archivage.
ex :
# ls -1p | grep -v / | tar -cvf /home/adminsys/archive.tar --files-from - file1.txt file2.txt file3.txt # tar -tf /home/adminsys/archive.tar file1.txt file2.txt file3.txt
ls -1d */ | tar -cvf /path/archive.tar --files-from -
Archivera tous les dossiers du répertoire courant (et leur contenu), et leur contenu. L’archive générée ne doit pas se trouver dans le répertoire courant puisque c’est justement celui qui sert de référence à l’archivage.
ex :
# ls -1d */ | tar -cvf /home/adminsys/archive.tar --files-from - source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt source3/ source3/file7.txt source3/file8.txt source3/file9.txt # tar -tf /home/adminsys/archive.tar source1/ source1/file1.txt source1/file2.txt source1/file3.txt source2/ source2/file4.txt source2/file5.txt source2/file6.txt source3/ source3/file7.txt source3/file8.txt source3/file9.txt
Rmq : Pour archiver les fichiers et dossiers (et leur contenu) visibles du répertoire courant :
ls -1p | tar -cvf /path/archive.tar --files-from -
Sauvegardes incrémentales
Première sauvegarde : la référence pour les incrémentales qui suivent
tar -cvf archive1.tar dossiers -g liste
Deuxième sauvegarde : la première incrémentale
tar -cvf archive2.tar dossiers -g liste
Si le fichier liste n’existe pas, il sera alors créé automatiquement.
Il sert de référence pour les incrémentales qui suivent la sauvegarde initiale.
ex :
# tar -cvf archive1.tar source/ -g liste.txt tar: source : le répertoire est nouveau. source/ source/file1.txt source/file2.txt source/file3.txt # cat liste.txt GNU tar-1.27.1-2 147655984037336626501476552060614439762049785053sourceYfile1.txtYfile2.txtYfile3.txt # touch source/file1.txt source/file4.txt # tar -cvf archive2.tar source/ -g liste.txt source/ source/file1.txt source/file4.txt # cat liste.txt GNU tar-1.27.1-2 1476560031445987884014765600249058760072049785053sourceYfile1.txtNfile2.txtNfile3.txtYfile4.txt # tar -tvf archive1.tar drwxr-xr-x root/root 34 2016-10-15 19:21 source/ -rw-r--r-- root/root 0 2016-10-15 19:14 source/file1.txt -rw-r--r-- root/root 0 2016-10-15 19:14 source/file2.txt -rw-r--r-- root/root 0 2016-10-15 19:14 source/file3.txt # tar -tvf archive2.tar drwxr-xr-x root/root 45 2016-10-15 21:33 source/ -rw-r--r-- root/root 0 2016-10-15 21:33 source/file1.txt -rw-r--r-- root/root 0 2016-10-15 21:33 source/file4.txt
Restauration d’une sauvegarde incrémentale :
Restauration de la première sauvegarde
tar -xvf archive1.tar -g /dev/null
Restauration de la première incrémentale
tar -xvf archive2.tar -g /dev/null
# tar -xvf archive1.tar -g /dev/null source/ source/file1.txt source/file2.txt source/file3.txt # tar -xvf archive2.tar -g /dev/null source/ source/file1.txt source/file4.txt
Archivage avec fichiers datés
tar -cvf archive.`date --rfc-3339=date`.tar dossiers -g liste
Génère une archive datée au format archive.AAAA-MM-JJ.tar (utile pour un cron par exemple).
# tar -cvf archive.`date --rfc-3339=date`.tar source/ -g liste.txt tar: source : le répertoire est nouveau. source/ source/file1.txt source/file2.txt source/file3.txt # tar -tf archive.2016-10-15.tar source/ source/file1.txt source/file2.txt source/file3.txt
Archivage/Désarchivage à la volée
(tar -cvf - .) | (cd /path/destination/ ; tar -xvf -)
ou, encore plus court :
tar c . | tar x -C /path/destination
Ici l’archive est créée sur la sortie standard à partir du répertoire courant. Le résultat est utilisé pour être extrait dans le dossier spécifié par l’option -C.
L’intérêt est limité puisque cela revient à faire une simple copie du répertoire courant vers un autre dossier.
Par contre, cette commande prend tout son intérêt dans connexion distante via SSH puisqu’elle évite de générer une archive nommée, de la copier sur le serveur distant puis de la désarchiver.
Archivage/Compression à la volée
Format gzip :
tar -cvf - dossier | gzip -c6 > archive.tar.gz
Equivaut à :
tar -zcvf archive.tar.gz dossier
Format bzip2 :
tar -cvf - dossier | bzip2 -c9 > archive.tar.bz2
Equivaut à :
tar -jcvf archive.tar.bz2 dossier
Format xz :
tar -cvf - dossier | xz -c1 > archive.tar.xz
Equivaut à :
tar -Jcvf archive.tar.xz dossier
Afficher la progression d’un tarage ou détarage
Tarage : Progression non graphique
tar -cf - fichiers|dossiers | pv -s $(du -sb fichiers|dossiers | awk '{print $1}') > archive.tar
ex :
# tar -cf - sample | pv -s $(du -sb sample | awk '{print $1}') > sample.tar

Tarage : Progression graphique
(tar -cf - fichiers|dossiers | pv -n -s $(du -sb fichiers|dossiers | awk '{print $1}') > archive.tar) 2>&1 | dialog --gauge "text" height width
ex :
# (tar -cf - sample | pv -n -s $(du -sb sample | awk '{print $1}') > sample.tar) 2>&1 | dialog --gauge "Progression..." 7 50

Détarage : Progression non graphique
pv archive.tar | tar -xf -
ex :
# pv sample.tar | tar -xf -

Détarage : Progression graphique
(pv -n archive.tar | tar -xf -) 2>&1 | dialog --gauge "text" height width
ex :
# (pv -n sample.tar | tar -xf -) 2>&1 | dialog --gauge "Progression..." 7 50

Archivage distant via SSH
Dans les exemples suivants, root est autorisé pour la connexion au serveur distant et l’échange des clefs SSH a été réalisé afin de ne pas saisir de mot de passe lors de la commande.
Archivage/désarchivage à la volée
tar c . | ssh user@destinataire "tar x -C /path/destination"
Ici aucune archive n’est créée, l’archivage/désarchivage se font à la volée à partir de l’entrée standard.
ex :
# tar -cv . | ssh root@192.168.1.50 "tar -xv -C /home/adminsys/destination/"
./
./file1.txt
./file2.txt
./file3.txt
./
./file1.txt
./file2.txt
./file3.txt
Archivage sur le serveur distant
tar c . | ssh user@destinataire "cat > /path/destination/archive.tar"
ou
tar c . | ssh user@destinataire "dd of=/path/destination/archive.tar"
Ici l’archive n’est créée que sur la destination.
ex :
# tar -cv . | ssh root@192.168.1.50 "cat > /home/adminsys/destination/source.tar"
./
./file1.txt
./file2.txt
./file3.txt
# tar -cv . | ssh root@192.168.1.50 "dd of=/home/adminsys/destination/source.tar"
./
./file1.txt
./file2.txt
./file3.txt
20+0 enregistrements lus
20+0 enregistrements écrits
10240 octets (10 kB) copiés, 0,000272197 s, 37,6 MB/s
Restaurer une archive depuis un serveur distant
ssh user@destinataire "cat /path/destination/archive.tar" | tar x
ex :
# ssh root@192.168.1.50 "cat /home/adminsys/destination/source.tar" | tar -xvf -
./
./file1.txt
./file2.txt
./file3.txt
Tarer vers une bande LTO distante sans détarer
tar c . | ssh user@destinataire "cat > /dev/st0"
Ici c’est le répertoire courant qui est archivé.
Comparatif des formats xz, gzip et bzip2
On utilisera ici un fichier référence appelé sample.tar d’une taille de 100Mo.
Le tableau ci-dessous synthétise les résultats de compression, pour chaque format et chaque niveau de compression.
Le temps de compression affiché est en secondes et la taille du fichier résultant est en Mo (ou pourcentage du fichier original).
Format → | XZ | GZIP | BZIP2 | |||
Compression ↓ | Temps | Mo/% | Temps | Mo/% | Temps | Mo/% |
0 | 5.487 | 19 | – | – | – | – |
1 | 7.563 | 17 | 1.796 | 25 | 10.008 | 19 |
2 | 11.358 | 16 | 1.883 | 24 | 10.262 | 18 |
3 | 18.924 | 16 | 2.038 | 23 | 10.412 | 17 |
4 | 31.184 | 15 | 2.135 | 21 | 10.575 | 17 |
5 | 46.370 | 14 | 2.628 | 21 | 11.126 | 17 |
6 | 54.609 | 14 | 3.320 | 20 | 11.214 | 17 |
7 | 59.790 | 14 | 3.917 | 20 | 11.295 | 17 |
8 | 71.670 | 14 | 5.537 | 20 | 11.347 | 16 |
9 | 164.387 | 13 | 6.088 | 20 | 11.485 | 16 |
Le meilleur compromis selon moi, du point de vue du rapport temps/taille finale d’une part, et consommation de RAM et CPU (directement liés au niveau de compression utilisé) d’autre part, apparait en rouge pour chaque format, soit :
- XZ : niveau 1 (niveau par défaut : 6)
- GZIP : niveau 6 (niveau par défaut : 6)
- BZIP2 : niveau 9 (niveau par défaut : 9)
Archives compressées GZIP
Afficher le contenu d’une archive gzip
tar -tf archive.tar.gz
Créer une archive gzip
tar -zcvf archive.tar.gz fichiers|dossiers
Equivaut à (implicite):
tar -zcvf ./archive.tar.gz -C . fichiers|dossiers
tar -zcvf archive.tar.gz /path/fichiers|dossiers
ou, avec conservation du « / » initial :
tar -zcPvf archive.tar.gz /path/fichiers|dossiers
ou, en spécifiant le dossier d’exécution de la commande :
tar -zcvf archive.tar.gz -C /path fichiers|dossiers
Extraire une archive gz
tar -zxvf archive.tar.gz
Equivaut à (implicite):
tar -zxvf archive.tar.gz -C .
ou, pour extraire une archive contenant des membres avec « / » initial :
tar -zxPvf archive.tar.gz
Equivaut à (implicite):
tar -zxvf archive.tar.gz -C /
ou, en spécifiant le dossier d’extraction :
tar -zxvf archive.tar.gz -C target/
Ajouter des fichiers ou dossiers à une archive gz existante
Une archive compressée ne peut pas être mise à jour
Ajouter le contenu d’une archive gz à une archive gz existante
Impossible de concaténer des archives compressées
Supprimer des fichiers ou dossiers d’une archive gz existante
Une archive compressée ne peut pas être mise à jour
Restaurer uniquement certains fichiers d’une archive gz
tar -zxvf archive.tar.gz fichiers|dossiers
ou, en spécifiant un fichier référence en entrée :
tar -zxvf archive.tar.gz --files-from liste
ou, en préservant les fichiers existants de même nom :
tar -zxvf archive.tar.gz --keep-old-files
ou, en préservant les fichiers existants de même nom s’ils sont plus récents ou de même date :
tar -zxvf archive.tar.gz --keep-newer-files
Utilisation des wildcards lors de l’extraction d’une archive gz
tar -zxvf archive.tar.gz --wildcards 'pattern'
Exclusion d’un motif
Lors de l’archivage :
tar -zcvf archive.tar.gz dossiers|fichiers --exclude 'pattern'
Lors de l’extraction :
tar -zxvf archive.tar.gz --exclude 'pattern'
Exclusion à partir d’un fichier de référence
Lors de l’archivage :
tar -zcvf archive.tar.gz dossiers|fichiers --exclude-from liste
Lors de l’extraction :
tar -zxvf archive.tar.gz --exclude-from liste
Exclusion à partir d’une étiquette lors de l’archivage
tar -zcvf archive.tar.gz dossiers|fichiers --exclude-tag-all 'tag'
Comparer le contenu d’une archive gz avec des fichiers ou dossiers indiqués
tar -df archive.tar.gz
ou
tar -df archive.tar.gz fichiers|dossiers
Extraire seulement certains niveaux de l’arborescence d’une archive
tar -zxvf archive.tar.gz --strip-components lvl
Archiver en suivant les liens symboliques
tar -zcvhf archive.tar.gz fichiers|dossiers
Ne pas restaurer les dates de modifications
tar -zxvmf archive.tar.gz
Archiver à partir d’un fichier liste de référencement
tar -zcvf archive.tar.gz --files-from liste
Archiver à partir de l’entrée standard
Les fichiers du répertoire courant :
ls -1p | grep -v / | tar -zcvf /path/archive.tar.gz --files-from -
Les dossiers du répertoire courant (récursivement) :
ls -1d */ | tar -zcvf /path/archive.tar.gz --files-from -
Les fichiers et dossiers (récursivement) du répertoire courant :
ls -1p | tar -zcvf /path/archive.tar.gz --files-from -
Sauvegardes incrémentales
Première sauvegarde : la référence pour les incrémentales qui suivent
tar -zcvf archive1.tar.gz dossiers -g liste
Deuxième sauvegarde : la première incrémentale
tar -zcvf archive2.tar.gz dossiers -g liste
Restauration de la première sauvegarde
tar -zxvf archive1.tar.gz -g /dev/null
Restauration de la première incrémentale
tar -zxvf archive2.tar.gz -g /dev/null
Archivage avec fichiers datés
tar -zcvf archive.`date --rfc-3339=date`.tar.gz dossiers -g liste
SSH : Archivage/désarchivage GZ à la volée
tar zc . | ssh user@destinataire "tar zx -C /path/destination"
SSH : Archivage GZ sur le serveur distant
tar zc . | ssh user@destinataire "cat > /path/destination/archive.tar.gz"
ou
tar zc . | ssh user@destinataire "dd of=/path/destination/archive.tar.gz"
SSH : Restaurer une archive GZ depuis un serveur distant
ssh user@destinataire "cat /path/destination/archive.tar.gz" | tar zx
Afficher la progression d’une compression ou décompression
Compression : Progression non graphique
tar -cf - fichiers|dossiers | pv -s $(du -sb fichiers|dossiers | awk '{print $1}') | gzip -c6 > archive.tar.gz
ex :
# tar -cf - sample | pv -s $(du -sb sample | awk '{print $1}') | gzip -c6 > sample.tar.gz

Compression : Progression graphique
(tar -cf - fichiers|dossiers | pv -n -s $(du -sb fichiers|dossiers | awk '{print $1}') | gzip -c6 > archive.tar.gz) 2>&1 | dialog --gauge "text" height width
ex :
# (tar -cf - sample | pv -n -s $(du -sb sample | awk '{print $1}') | gzip -c6 > sample.tar.gz) 2>&1 | dialog --gauge "Progression..." 7 50

Décompression : Progression non graphique
pv archive.tar.gz | tar -zxf -
ex :
# pv sample.tar.gz | tar -zxf -

Décompression : Progression graphique
(pv -n archive.tar.gz | tar -zxf -) 2>&1 | dialog --gauge "text" height width
ex :
# (pv -n sample.tar.gz | tar -zxf -) 2>&1 | dialog --gauge "Progression..." 7 50

Archives compressées BZIP2
Afficher le contenu d’une archive bzip2
tar -tf archive.tar.bz2
Créer une archive bzip2
tar -jcvf archive.tar.bz2 fichiers|dossiers
Equivaut à (implicite):
tar -jcvf ./archive.tar.bz2 -C . fichiers|dossiers
tar -jcvf archive.tar.bz2 /path/fichiers|dossiers
ou, avec conservation du « / » initial :
tar -jcPvf archive.tar.bz2 /path/fichiers|dossiers
ou, en spécifiant le dossier d’exécution de la commande :
tar -jcvf archive.tar.bz2 -C /path fichiers|dossiers
Extraire une archive bz2
tar -jxvf archive.tar.bz2
Equivaut à (implicite):
tar -jxvf archive.tar.bz2 -C .
ou, pour extraire une archive contenant des membres avec « / » initial :
tar -jxPvf archive.tar.bz2
Equivaut à (implicite):
tar -jxvf archive.tar.bz2 -C /
ou, en spécifiant le dossier d’extraction :
tar -jxvf archive.tar.bz2 -C target/
Ajouter des fichiers ou dossiers à une archive bz2 existante
Une archive compressée ne peut pas être mise à jour
Ajouter le contenu d’une archive bz2 à une archive bz2 existante
Impossible de concaténer des archives compressées
Supprimer des fichiers ou dossiers d’une archive bz2 existante
Une archive compressée ne peut pas être mise à jour
Restaurer uniquement certains fichiers d’une archive bz2
tar -jxvf archive.tar.bz2 fichiers|dossiers
ou, en spécifiant un fichier référence en entrée :
tar -jxvf archive.tar.bz2 --files-from liste
ou, en préservant les fichiers existants de même nom :
tar -jxvf archive.tar.bz2 --keep-old-files
ou, en préservant les fichiers existants de même nom s’ils sont plus récents ou de même date :
tar -jxvf archive.tar.bz2 --keep-newer-files
Utilisation des wildcards lors de l’extraction d’une archive bz2
tar -jxvf archive.tar.bz2 --wildcards 'pattern'
Exclusion d’un motif
Lors de l’archivage :
tar -jcvf archive.tar.bz2 dossiers|fichiers --exclude 'pattern'
Lors de l’extraction :
tar -jxvf archive.tar.bz2 --exclude 'pattern'
Exclusion à partir d’un fichier de référence
Lors de l’archivage :
tar -jcvf archive.tar.bz2 dossiers|fichiers --exclude-from liste
Lors de l’extraction :
tar -jxvf archive.tar.bz2 --exclude-from liste
Exclusion à partir d’une étiquette lors de l’archivage
tar -jcvf archive.tar.bz2 dossiers|fichiers --exclude-tag-all 'tag'
Comparer le contenu d’une archive bz2 avec des fichiers ou dossiers indiqués
tar -df archive.tar.bz2
ou
tar -df archive.tar.bz2 fichiers|dossiers
Extraire seulement certains niveaux de l’arborescence d’une archive
tar -jxvf archive.tar.bz2 --strip-components lvl
Archiver en suivant les liens symboliques
tar -jcvhf archive.tar.bz2 fichiers|dossiers
Ne pas restaurer les dates de modifications
tar -jxvmf archive.tar.bz2
Archiver à partir d’un fichier liste de référencement
tar -jcvf archive.tar.bz2 --files-from liste
Archiver à partir de l’entrée standard
Les fichiers du répertoire courant :
ls -1p | grep -v / | tar -jcvf /path/archive.tar.bz2 --files-from -
Les dossiers du répertoire courant (récursivement) :
ls -1d */ | tar -jcvf /path/archive.tar.bz2 --files-from -
Les fichiers et dossiers (récursivement) du répertoire courant :
ls -1p | tar -jcvf /path/archive.tar.bz2 --files-from -
Sauvegardes incrémentales
Première sauvegarde : la référence pour les incrémentales qui suivent
tar -jcvf archive1.tar.bz2 dossiers -g liste
Deuxième sauvegarde : la première incrémentale
tar -jcvf archive2.tar.bz2 dossiers -g liste
Restauration de la première sauvegarde
tar -jxvf archive1.tar.bz2 -g /dev/null
Restauration de la première incrémentale
tar -jxvf archive2.tar.bz2 -g /dev/null
Archivage avec fichiers datés
tar -jcvf archive.`date --rfc-3339=date`.tar.bz2 dossiers -g liste
SSH : Archivage/désarchivage BZ2 à la volée
tar jc . | ssh user@destinataire "tar jx -C /path/destination"
SSH : Archivage BZ2 sur le serveur distant
tar jc . | ssh user@destinataire "cat > /path/destination/archive.tar.bz2"
ou
tar jc . | ssh user@destinataire "dd of=/path/destination/archive.tar.bz2"
SSH : Restaurer une archive BZ2 depuis un serveur distant
ssh user@destinataire "cat /path/destination/archive.tar.bz2" | tar jx
Afficher la progression d’une compression ou décompression
Compression : Progression non graphique
tar -cf - fichiers|dossiers | pv -s $(du -sb fichiers|dossiers | awk '{print $1}') | bzip2 -c9 > archive.tar.bz2
ex :
# tar -cf - sample | pv -s $(du -sb sample | awk '{print $1}') | bzip2 -c9 > sample.tar.bz2

Compression : Progression graphique
(tar -cf - fichiers|dossiers | pv -n -s $(du -sb fichiers|dossiers | awk '{print $1}') | bzip2 -c9 > archive.tar.bz2) 2>&1 | dialog --gauge "text" height width
ex :
# (tar -cf - sample | pv -n -s $(du -sb sample | awk '{print $1}') | bzip2 -c9 > sample.tar.bz2) 2>&1 | dialog --gauge "Progression..." 7 50

Décompression : Progression non graphique
pv archive.tar.bz2 | tar -jxf -
ex :
# pv sample.tar.bz2 | tar -jxf -

Décompression : Progression graphique
(pv -n archive.tar.bz2 | tar -jxf -) 2>&1 | dialog --gauge "text" height width
ex :
# (pv -n sample.tar.bz2 | tar -jxf -) 2>&1 | dialog --gauge "Progression..." 7 50

Archives compressées XZ
Afficher le contenu d’une archive xz
tar -tf archive.tar.xz
Créer une archive xz
tar -Jcvf archive.tar.xz fichiers|dossiers
Equivaut à (implicite):
tar -Jcvf ./archive.tar.xz -C . fichiers|dossiers
tar -Jcvf archive.tar.xz /path/fichiers|dossiers
ou, avec conservation du « / » initial :
tar -JcPvf archive.tar.xz /path/fichiers|dossiers
ou, en spécifiant le dossier d’exécution de la commande :
tar -Jcvf archive.tar.xz -C /path fichiers|dossiers
Extraire une archive xz
tar -Jxvf archive.tar.xz
Equivaut à (implicite):
tar -Jxvf archive.tar.xz -C .
ou, pour extraire une archive contenant des membres avec « / » initial :
tar -JxPvf archive.tar.xz
Equivaut à (implicite):
tar -Jxvf archive.tar.xz -C /
ou, en spécifiant le dossier d’extraction :
tar -Jxvf archive.tar.xz -C target/
Ajouter des fichiers ou dossiers à une archive xz existante
Une archive compressée ne peut pas être mise à jour
Ajouter le contenu d’une archive xz à une archive xz existante
Impossible de concaténer des archives compressées
Supprimer des fichiers ou dossiers d’une archive xz existante
Une archive compressée ne peut pas être mise à jour
Restaurer uniquement certains fichiers d’une archive xz
tar -Jxvf archive.tar.xz fichiers|dossiers
ou, en spécifiant un fichier référence en entrée :
tar -Jxvf archive.tar.xz --files-from liste
ou, en préservant les fichiers existants de même nom :
tar -Jxvf archive.tar.xz --keep-old-files
ou, en préservant les fichiers existants de même nom s’ils sont plus récents ou de même date :
tar -Jxvf archive.tar.xz --keep-newer-files
Utilisation des wildcards lors de l’extraction d’une archive xz
tar -Jxvf archive.tar.xz --wildcards 'pattern'
Exclusion d’un motif
Lors de l’archivage :
tar -Jcvf archive.tar.xz dossiers|fichiers --exclude 'pattern'
Lors de l’extraction :
tar -Jxvf archive.tar.xz --exclude 'pattern'
Exclusion à partir d’un fichier de référence
Lors de l’archivage :
tar -Jcvf archive.tar.xz dossiers|fichiers --exclude-from liste
Lors de l’extraction :
tar -Jxvf archive.tar.xz --exclude-from liste
Exclusion à partir d’une étiquette lors de l’archivage
tar -Jcvf archive.tar.xz dossiers|fichiers --exclude-tag-all 'tag'
Comparer le contenu d’une archive xz avec des fichiers ou dossiers indiqués
tar -df archive.tar.xz
ou
tar -df archive.tar.xz fichiers|dossiers
Extraire seulement certains niveaux de l’arborescence d’une archive
tar -Jxvf archive.tar.xz --strip-components lvl
Archiver en suivant les liens symboliques
tar -Jcvhf archive.tar.xz fichiers|dossiers
Ne pas restaurer les dates de modifications
tar -Jxvmf archive.tar.xz
Archiver à partir d’un fichier liste de référencement
tar -Jcvf archive.tar.xz --files-from liste
Archiver à partir de l’entrée standard
Les fichiers du répertoire courant :
ls -1p | grep -v / | tar -Jcvf /path/archive.tar.xz --files-from -
Les dossiers du répertoire courant (récursivement) :
ls -1d */ | tar -Jcvf /path/archive.tar.xz --files-from -
Les fichiers et dossiers (récursivement) du répertoire courant :
ls -1p | tar -Jcvf /path/archive.tar.xz --files-from -
Sauvegardes incrémentales
Première sauvegarde : la référence pour les incrémentales qui suivent
tar -Jcvf archive1.tar.xz dossiers -g liste
Deuxième sauvegarde : la première incrémentale
tar -Jcvf archive2.tar.xz dossiers -g liste
Restauration de la première sauvegarde
tar -Jxvf archive1.tar.xz -g /dev/null
Restauration de la première incrémentale
tar -Jxvf archive2.tar.xz -g /dev/null
Archivage avec fichiers datés
tar -Jcvf archive.`date --rfc-3339=date`.tar.xz dossiers -g liste
SSH : Archivage/désarchivage XZ à la volée
tar Jc . | ssh user@destinataire "tar Jx -C /path/destination"
SSH : Archivage XZ sur le serveur distant
tar Jc . | ssh user@destinataire "cat > /path/destination/archive.tar.xz"
ou
tar Jc . | ssh user@destinataire "dd of=/path/destination/archive.tar.xz"
SSH : Restaurer une archive XZ depuis un serveur distant
ssh user@destinataire "cat /path/destination/archive.tar.xz" | tar Jx
Afficher la progression d’une compression ou décompression
Compression : Progression non graphique
tar -cf - fichiers|dossiers | pv -s $(du -sb fichiers|dossiers | awk '{print $1}') | xz -c1 > archive.tar.xz
ex :
# tar -cf - sample | pv -s $(du -sb sample | awk '{print $1}') | xz -c1 > sample.tar.xz

Compression : Progression graphique
(tar -cf - fichiers|dossiers | pv -n -s $(du -sb fichiers|dossiers | awk '{print $1}') | xz -c1 > archive.tar.xz) 2>&1 | dialog --gauge "text" height width
ex :
# (tar -cf - sample | pv -n -s $(du -sb sample | awk '{print $1}') | xz -c1 > sample.tar.xz) 2>&1 | dialog --gauge "Progression..." 7 50

Décompression : Progression non graphique
pv archive.tar.xz | tar -Jxf -
ex :
pv sample.tar.xz | tar -Jxf -

Décompression : Progression graphique
(pv -n archive.tar.xz | tar -Jxf -) 2>&1 | dialog --gauge "text" height width
ex :
(pv -n sample.tar.xz | tar -Jxf -) 2>&1 | dialog --gauge "Progression..." 7 50
