Bannière

pv : Afficher une barre de progression lors des transferts de fichier

  Le 27 mai 2025     Aurélien Schnoebelen     #astuces#bash  

Pour afficher une barre de progression avec tar notemment, vous pouvez utiliser l’utilitaire pv qui permett de monitorer la progression de données à travers un pipe.

Installez pv :

sudo apt install pv
sudo dnf install pv
sudo pacman -Syu pv
yay -Syu pv

Utilisation :

Pour extraire une archive :

pv votrearchive.tar.gz | tar -xz

Pour créer une archive :

tar -czf - ./repertoire_a_archiver | pv > archive.tar.gz

Man page

Utilisation : pv [OPTIONS] [FICHIER]...
Concaténer FICHIER(s), ou l'entrée standard, sur la sortie standard avec monitorage.

  -p, --progress                   afficher la barre de progression
  -t, --timer                      afficher le temps écoulé
  -e, --eta                        afficher l'heure approximative de l'achèvement de la tâche
  -I, --fineta                     afficher l'heure absolute de l'achèvement de la tâche
  -r, --rate                       afficher le taux de tranfert des données
  -a, --average-rate               afficher le compteur de taux moyen de transfert de données
  -b, --bytes                      afficher le nombre d'octets transférés
  -T, --buffer-percent             afficher le pourcentage de tampon de transfert utilisé
  -A, --last-written NUM           afficher les derniers NUM octets écrits
  -F, --format FORMAT              définir le format de sortie sur FORMAT
  -n, --numeric                    imprimer en pourcentage plutôt que des informations visuelles
  -q, --quiet                      n'afficher aucune information de transfert

  -8, --bits                       afficher le nombre de bits transférés
  -k, --si                         traiter les suffixes comme des multiples de 1000 au lieu de 1024
  -W, --wait                       ne rien afficher avant qu'au moins un octet soit tranféré
  -D, --delay-start SEC            ne rien afficher jusqu'à ce que SEC secondes se soient écoulées
  -s, --size TAILLE                ajuster la taille estimée des données à TAILLE octets
  -g, --gauge                      si la taille est inconnue, afficher le taux de transfert par rapport au taux de transfert max
  -l, --line-mode                  compter les lignes au lieu des octets
  -0, --null                       les lignes sont terminées par un caractère nul
  -i, --interval SEC               mettre à jour toutes les SEC secondes
  -m, --average-rate-window SEC    calculer le taux moyen d'après les SEC dernières secondes (30s par défaut)
  -w, --width LARGEUR              présumer la largeur du terminal à LARGEUR caractères
  -H, --height HAUTEUR             présumer la hauteur du terminal à HAUTEUR lignes
  -N, --name NOM                   préfixer les informations visuelles avec NOM
  -u, --bar-style STYLE            set default bar style to NAME
  -x, --extra-display SPEC         also send progress to SPEC
  -v, --stats                      afficher les statistiques de transfert à la fin
  -f, --force                      imprimer vers la sortie d'erreur standard même si ce n'est pas un terminal
  -c, --cursor                     utiliser les séquences d'échappements de positionnement de curseur

  -o, --output FICHIER             écrire la sortie dans FICHIER au lieu de la sortie standard
  -L, --rate-limit TAUX            limite le taux de transfert à TAUX octets par seconde
  -B, --buffer-size OCTETS         Utiliser une mémoire tampon de OCTETS octets
  -C, --no-splice                  ne jamais utiliser splice(), toujours utiliser read/write
  -E, --skip-errors                ignorer les erreurs de lecture dans l'entrée
  -Z, --error-skip-block OCTETS    ignorer les erreurs dans OCTETS blocs à la fois
  -S, --stop-at-size               arrêter après le transfert de --size octets
  -Y, --sync                       vider le cache sur le disque après chaque écriture
  -K, --direct-io                  utiliser les E/S directes pour contourner le cache
  -X, --discard                    rejeter l'entrée au lieu de l'écrire vers la sortie
  -U, --store-and-forward FICHIER  écrire toute l'entrée vers FICHIER avant de l'écrire vers la sortie
  -d, --watchfd PID[:FD]           surveiller le fichier FD ouvert par le processus PID
  -R, --remote PID                 mettre à jour la configuration du processus PID

  -P, --pidfile FICHIER            enregistrer l'ID de processus dans FICHIER
  -h, --help                       afficher cette aide puis quitter
  -V, --version                    afficher la version puis quitter

Supported format sequences:

  %p %{progress} %{progress-amount-only} %{progress-bar-only} %{bar-plain} %{bar-block} %{bar-granular} %{bar-shaded} %t %{timer} %e %{eta} %I %{fineta} %r %{rate} %a %{average-rate} %b %{bytes}
  %{transferred} %T %{buffer-percent} %A %{last-written} %L %{previous-line} %N %{name} %{sgr:colour,...}

SVP rapporter tous bogues à pv@ivarch.com