Avoir une barre de progression avec la commande cp sous Linux
Par Korben le 24 janvier 2008

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
- Faire une capture écran d’une zone sous Linux (Ubuntu)
- Une fausse barre de progression
- Faire une capture écran avec Ubuntu
- Trouver les plus gros fichiers de votre disque dur sous Linux
- Comment obtenir tous les droits sous XP






Thot
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
admin
content que ça te serve !
Posté le 24 janvier 2008 à 17:33:00
Diti
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
piège à loup
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
Hoani
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
Ouais...
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
admin
@Ouais : Donne la tienne, on comparera comme ça
Posté le 27 janvier 2008 à 23:45:13
admin
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