Bon après maintes réflexions je crois que je vais laisser tomber ce projet ^^
Je commence légèrement a désespérer…
Merci a toi Misterfreez pour ton aide !!
Toute fois si quelqu’un est curieux de vouloir tester je met a disposition tout le code:
Le but final étais de:
- Réaliser une barre de progression qui affiche l’état d’une sauvegarde tar.
- A coté de cette barre de progression y ajouté un timmer qui permet d’afficher le temps passé a sauvegarder.
Voici le code pour les acharnés du bash
:
#/bin/bash
timmer() { # fonction
for compteur in $(seq 1 3600)# de 1 a 3600 soit 1heure
do
sleep 1 # chaque seconde
echo -ne "\033[$()G"# remplace chaque caractere sur la meme ligne
if [ $compteur -gt 59 ] # si compteur plus grand que 59
then
let min=compteur/60 # division entière
let sec=compteur%60 # reste ou modulo
echo -n "$min:$sec " # on affiche la minute
else echo -n "$compteur " # on affiche les secondes
fi
done
}
function progress() { # fonction progress qui va printer les '='
local fin=$(tput cols) # on compte le nombre de colones de l'ecran
local test=$(($fin-2)) # on retire a ce nombre les caracteres '[]'
local bar='============================================================================================================================================================================================================================='
local empty="${bar//=/ }" # remplace les = par ' ' on initie tout d'abord un espacement [ ] avent de le remplir
progress=${1:-$(($progress+10))} # permet de appeler la variable et de lui donner un parametre soit progress 5 ==> 5%
echo -ne "\033[$()G"
printf "[%s%s]" "${bar:0:$progress}" "${empty:0:$test-$progress}" # affiche la barre.
}
function calc () { # calcule le pourcentage deja copié avec celui qui reste a copier
local fin=$(tput cols) # on compte le nombre de colones de l'ecran
local test=$(($fin-2)) # on retire a ce nombre les caracteres '[]'
local purcentfen=$(($test/100)) # calcule le poucentage pour un '='
destination=$(du -sk $dest | cut -d '/' -f1) # calcule la taille du repertoire de destination
purcentdata=$(echo "scale=0;($destination * 100) / $source" | bc -l) # calcule le pourcentage de données transferés
nbegale=$(echo "scale=0;($purcentfen*$purcentdata)" | bc -l) # nombre d'egale a afficher
}
rep='/repertoire source' # repertoire source
dest='/repertoire dest' # repertoire de destination
source=$(du -sk $rep | cut -d '/' -f1 ) # taille du répertoire total
calc # appel a la fonction calc
progress $nbegale # on affiche le nombre d'egales par raport a ce que l'on a deja copié.
#tar -zcf $dest/save.tar.gz $rep
Bonne lecture
j’espère avoir été assez clair … sinon n’hésitez pas a me demander.
ps: Je décline toute responsabilité en cas de ,mal de crâne, ou de cécité 