Bonjour tlm,
Récemment je suis tombé par hasard sur un script bash de copie avec une barre de progression. Le script est basé sur dialog. Ca peut être utile pour la copie de gros fichiers qui demandent un temps de transfert considérable. Bref, voilà le code :
#!/bin/bash
if [ "$1" != "" -a "$2" != "" ]; then
if [ -f $1 ]; then
src=$1
size=`ls -al $src | awk '{print int(($5/512)+(($5%512)?1:0))}'`
src_name=`find $src -printf %f`
else
echo "Fichier source introuvable" >2
exit 1
fi
if [ -f $2 ]; then
dest=$2
else
if [ -d $2 ]; then
dest=$2/$src_name
else
dest=$2
touch $dest 2> /dev/null
if [ $? != 0 ]; then
echo "Destination invalide" >&2
exit 1
fi
fi
fi
echo $src $dest $size
chunk_size=$(($size/100))
if [ $chunk_size -lt 1 ]; then
cp $src $dest
exit 0
fi
copied=0
(while [ $copied -lt $size ]; do
dd if=$src of=$dest bs=512 count=$chunk_size skip=$copied seek=$copied >/dev/null 2>&1
copied=$(($copied+$chunk_size))
echo $(((100*$copied)/$size))
done) | dialog --backtitle "Widgets de bash dialog" --title " Copie en cours " --gauge "$src\n> $dest " 10 60 0
else
echo "usage: $0 source destination"
fi
exit 0
Quand j'aurai un peu de temps, je généraliserais la copie à un ensemble de fichiers. Voilà 🙂