Avoir une barre de progression avec la commande cp sous Linux

shellunix Avoir une barre de progression avec la commande cp sous Linux

Sous Linux, ce qui est chiant quand on fait un “copier” (cp) en ligne de commande, c’est qu’on ne sait jamais où on en est…alors qu’avec Wget, on a une belle barre de progression qui donne l’avancement du téléchargement.Pour ceux que ça intéresse, voici le script qui va permettre d’avoir le même genre de barre de progression avec “cp”.. Il vous suffit de créer un fichier script avec ce qu’il y a ci-dessous dedans, de le nommer cp_p et de le copier dans /usr/bin

#!/bin/sh
cp_p()
{
   set -e
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
	    count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

Ca donnera alors un truc comme ça lorsque vous copierez des fichiers en ligne de commande :

% cp_p /mnt/files/ubuntu.iso.iso /home/korben
 70% [=========================================>                      ]

Pratique non ?

Je vous recommande aussi la lecture des sujets suivants


Faites un lien vers cette news sur votre site



8 Commentaire(s)

  1. MyAvatars 0.2

    Thot Reply to this comment

    Depuis le temps que je voulais chercher ça… t’a fait le boulot a ma place, la classe :)

    Posté le 24 janvier 2008 à 17:16:01

  2. MyAvatars 0.2

    admin Reply to this comment

    content que ça te serve !

    Posté le 24 janvier 2008 à 17:33:00

  3. MyAvatars 0.2

    Diti Reply to this comment

    Et après, y’a qu’à créer un alias sur la base de ceux existant dans le .bashrc et tout baigne.

    Posté le 24 janvier 2008 à 17:43:11

  4. MyAvatars 0.2

    piège à loup Reply to this comment

    A une époque la barre de progression était disponible dans la commande cp (c’était pas officiel mais c’était la)
    Merci pour le petit script. La barre de progression c’est utile sur les gros fichiers. Mais je préfère utilise la commande scp (secure cp) qui affiche le pourcentage de progression.
    Un petit exemple:

    scp /fichier/cible localhost:/chemin/destination/

    Ca nécessite que le deamon ssh soit actif, demandera votre mdp et vous indique le débit de transfert. C’est peut-être plus compliqué mais ça reste “clean”

    Posté le 25 janvier 2008 à 00:17:56

  5. MyAvatars 0.2

    Hoani Reply to this comment

    Tu peux aussi utiliser la commande rsync avec les options –show-progress et -h, ça marche du tonnerre et tu as une estimation du temps restant.

    Posté le 25 janvier 2008 à 17:51:44

  6. MyAvatars 0.2

    Ouais... Reply to this comment

    Tu pourrais au moins citer ta source!
    Je t’ai déjà connu plus respectueux du travail des autres…

    Posté le 27 janvier 2008 à 23:13:22

  7. MyAvatars 0.2

    admin Reply to this comment

    @Ouais : Donne la tienne, on comparera comme ça :-)

    Posté le 27 janvier 2008 à 23:45:13

  8. MyAvatars 0.2

    admin Reply to this comment

    La mienne c’est http://chris-lamb.co.uk/2008/01/24/can-you-get-cp-to-give-a-progress-bar-like-wget/

    Posté le 27 janvier 2008 à 23:47:13

Lacher un com'

« Retour aux commentaires classiques (texte)