Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/03/2009, à 19:39

dje16200

Zenity progress et rsync - tar

Bonjour à toute la communauté,

Voilà, je suis en train de faire un script de sauvegarde/synchronisation et pour le rendre un peu plus agréable à utiliser, j'ai recours à Zenity. J'arrive à peu près à faire ce que je veux avec cet outil (car je ne suis pas très exigent).
Pendant mes sauvegardes/synchros, j'affiche une barre de progression avec zenity --progress --pulsate. Bon ça marche, c'est cool, mais j'aimerais avoir un peu plus de détails au cours des opérations (pourcentage, débit, taille du fichier).
C'est là que ça se complique, d'autant plus que j'aimerais le faire avec les commandes rsync, tar, rar et zip.

J'ai trouvé quelques trucs un peu partout sur le net mais soit ça ne fonctionne pas, soit ce n'est pas ce que je veux ou alors je n'arrive pas à l'adapter (je ne suis pas très familier avec les commandes awk et sed).

-Pour rsync avec l'option --progress, j'ai trouvé une solution dans ce tuto (partie 4):
http://cudjoe.org/dotclear/post/2008/12 … rypt%C3%A9 , mais rien ne s'affiche chez moi:

rsync -va --progress $source $destination | awk -f rsync.awk | zenity --progress --percentage=0

-Pour tar, j'ai pensé à la commande "pv" (pipe viewer), avec un truc du genre:

tar -cvzf - $source | pv > $destination.tar.gz | zenity --progress --pulsate

Celle-ci ne me donnera pas le pourcentage (car pv ne connait pas la taille de la source) mais c'est pas grave, j'aimerais au moins avoir le débit et la taille du fichier de sortie dans zenity. Il me faudrait un moyen de rediriger la sortie de pv dans zenity.
Je sais que pour que celui-ci affiche la sortie d'une commande, il faut que la ligne commence par "#", mais je ne sais pas comment faire.

Puis pour rar et zip bah... je n'ai pas encore de piste.

Donc si quelqu'un a des idées/infos pour une de ces commandes... Merci d'avance!

Hors ligne

#2 Le 17/03/2009, à 10:27

AnsuzPeorth

Re : Zenity progress et rsync - tar

Pour ta premiere commande, tu as bien le fichier rsync.awk avec le bout de script dedans ?

Pour le deuxième, essais en remplacant la redirection par tee (pas sur du resultat)

tar -cvzf - $source | pv | tee $destination.tar.gz | zenity --progress --pulsate

Pour ajouter #, plusieurs soluce, essais avec xargs: exemple

echo ok | xargs -I{} echo "#{}"
#ok
echo ok | xargs echo "#"
# ok

ou avec sed

echo ok | sed 's/^/#/'
#ok

Dernière modification par AnsuzPeorth (Le 17/03/2009, à 10:49)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 17/03/2009, à 11:06

dje16200

Re : Zenity progress et rsync - tar

Salut AnsuzPeorth, merci pour ta réponse... mais ça ne fonctionne pas.

Pour rsync, oui j'ai bien mon fichier rsync.awk avec le code à l'intérieur. Ça ne m'affiche rien au cours de la sauvegarde, juste le résumé à la fin de la commande:
"total size is XXX  speedup is 1.00"

Pour tar (avec tee), ta commande me retourne des caractères illisibles dans tous les sens, mais ils sont affichés dans la fenêtre de Zenity, c'est déjà ça! big_smile
Je pense qu'il essaie de renvoyer le contenu du fichier tar.gz donc, ça ressemble à rien évidemment.

Ton astuce fonctionne pour ajouter # à chaque ligne, mais rien n'est redirigé dans zenity. J'ai essayé plusieurs trucs du genre:

(tar -cvzf - $source | pv -trb > $destination.tar.gz | sed 's/^/#/') | zenity --progress --pulsate

mais rien n'est affiché, même lorsque je supprime Zenity ou les parenthèses.

ou encore:

(tar -cvzf $dest/fichier.test.tar.gz $source | sed 's/^/#/') | zenity --progress --pulsate

pour essayer d'afficher les fichiers en cours de compression, mais zenity ne retourne toujours rien, pourtant les # sont bien présents lorsque je vire zenity...

Ce qui est étrange, c'est que si je fais

echo ok | xargs -I{} echo "#{}" | zenity --progress
ou
echo ok | sed 's/^/#/' | zenity --progress

le "ok" est bien affiché dans ma boîte.

Pour rediriger les infos de la commande pv, j'ai aussi essayé avec -N (qui permet d'ajouter un préfixe):

(tar -cvzf - $source | pv -trb -N"#" > $dest/fichier.test.tar.gz) | zenity --progress --pulsate

mais... encore et toujours rien, par contre les infos s'affichent dans le terminal, avec le # en début de ligne.

Bref, tout le monde aura compris, je rame là! roll

Hors ligne

#4 Le 17/03/2009, à 11:17

AnsuzPeorth

Re : Zenity progress et rsync - tar

si c'est la commande pv qui renvois les infos essais comme ça (pas garanti,je connais pas pv et j'utilise jamais tar & co):

tar -cvzf - $source | tee $dest/fichier.test.tar.gz | pv -trb -N"#" | zenity --progress --pulsate

la commande tee "double" la sortie, donc elle envois dans le fichier et renvois sur l'entrée standard.

Dernière modification par AnsuzPeorth (Le 17/03/2009, à 11:19)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 17/03/2009, à 11:34

dje16200

Re : Zenity progress et rsync - tar

Toujours pas...

tee me renvoie cette fois-ci les caractères illisibles dans la console, qui n'arrête pas de biper...

En fait, dans le cas de tar, je me fiche un peu de sa sortie. Lui il ne me donne que les fichiers en cours de compression. J'utilise pv car ce dernier me donne la quantité de données et le débit qui transitent par un pipe.

Dans le cas de

(tar -cvzf - $source | pv -trb -N"#" > $dest/fichier.test.tar.gz) | zenity --progress --pulsate

les informations sont correctement affichées... dans la console!

J'ai donc pensé que pv affichait sur la sortie d'erreur et j'ai fait

(tar -cvzf - $source | pv -trb -N"#" > $dest/fichier.test.tar.gz) 2>&1 | zenity --progress --pulsate

Là, ma barre "pulse" bien, mais la sortie de pv est cachée...

En tout cas merci de te pencher sur mon problème!

Dernière modification par dje16200 (Le 17/03/2009, à 11:35)

Hors ligne

#6 Le 17/03/2009, à 11:45

dje16200

Re : Zenity progress et rsync - tar

Pour info, voici la sortie de pv:

tar -cvzf - $source | pv -trb -N"#" > $dest/fichier.test.tar.gz
      #:  231MO 0:00:14 [16,8MO/s]

Je suppose que c'est la sortie d'erreur car

(tar -cvzf - $source | pv -trb -N"#" > $dest/fichier.test.tar.gz) > /dev/null

me renvoie les infos

tandis qu'avec "2>":

(tar -cvzf - $source | pv -trb -N"#" > $dest/fichier.test.tar.gz) 2> /dev/null

la sortie est absente

Hors ligne

#7 Le 17/03/2009, à 13:57

koderez (non connecté)

Re : Zenity progress et rsync - tar

Bonjour, tu peux peut-être t'inspirer de mon script qui utilise une progressbar "réelle" et non "pulsate" avec zenity.

http://forum.ubuntu-fr.org/viewtopic.ph … 9#p2465769

Bien sûr ce script est à améliorer mais l'idée est là : rsync -> sed -> zenity.

A bientôt
kod

#8 Le 17/03/2009, à 16:04

dje16200

Re : Zenity progress et rsync - tar

Wow, merci! wink

J'ai essayé ta méthode, les infos à la fin de la sauvegarde s'affichent correctement (je retiens déjà ça), mais ma barre de progression reste désespérément vide, sans les informations de ta capture d'écran. Ça stagne à "Initialisation de la sauvegarde...", le script tourne et synchronise mais c'est tout.

J'ai essayé sur une autre machine, avec /bin/sh, /bin/bash, copier/coller ton script en ne changeant que la source et la destination, nada!

Alors je ne sais pas ce que je fais ou ne fais pas pour que ça foire, je vais continuer mes recherches...

Hors ligne

#9 Le 17/03/2009, à 17:07

frafa

Re : Zenity progress et rsync - tar

Salut,
un bout de code extrait d'un de mes script il fait:
relever taille de source, puis la tache rsync est lancé en tache de fond ,
puis une boucle est lancée qui compare taille de source et destination et affiche evolution dans progress

source="/home/frafa/Bureau/aa/" # / en fin!
destination="/home/frafa/Bureau/bb/" # / en fin!

function DECIMALE()
{
if [ $1 = "-p" ]; then
precision=$2; shift 2;
else
precision=2
fi
bc -q << EOF
scale=$precision
$*
quit
EOF
}
function COPIE()
{
echo -e '\E[37;44m'"\033[1m Début de la copie \033[0m"
TAILLE=$(($(du -sB 1 "$source" | awk '{print $1}')/1000/1000));T1=0;
rsync -uravH --delete --exclude="*~" "${source}." "${destination}." &
echo -e '\E[37;44m'"\033[1m ________________________ \033[0m"
(while [ "$T1" -lt "${TAILLE}" ] ; do
T1=$(($(du -sB 1 "${destination}" | awk '{print $1}')/1000/1000))
T2=$(DECIMALE -p 2 $T1/$TAILLE*100)
(echo -e "${T2}\n#Pourcentage de la copie effectué: (${T2}%) de ${TAILLE}Mb";)
sleep 2 ;
done) | zenity --progress --width 600 --auto-close
}
COPIE

Hors ligne

#10 Le 17/03/2009, à 17:25

dje16200

Re : Zenity progress et rsync - tar

Yes, merci frafa !

Ça marche big_smile big_smile

Bon, me reste encore tar et c'est en bonne voie:

(tar -czf - $source | pv -cns $(du -sh $source | awk '{print $1}') > $dest/fichier.test.tar.gz) 2>&1 | zenity --progress --auto-close

La barre de progression avance bien, me reste plus que le débit et la taille totale à afficher. Je vais m'appuyer sur ce qui vient d'être fait...
Je posterai la suite des évènements ici...

Hors ligne

#11 Le 09/02/2011, à 23:39

BlueRabbit

Re : Zenity progress et rsync - tar

bonjour ,

bon je veux accélére mon script mais je cappot:

TT=$(du -ax ${RACINE_A_SAVE} $EXCLUSTION_TAR|wc -l)

tar cvpfz ${PART_TMP_EXT3_4}${SAVELINUX} ${RACINE_A_SAVE%\/} ${EXCLUSTION_TAR} 2>/dev/null|sed -e '
            /^.\{53\}/   {s/\(^.\{20\}\).*\(.\{30\}$\)/"Fichier traité : \1\[...\]\2"/}
                 /^.\{53\}/!  {s/^/"Fichier traité : &"/} 
    ' 2>/dev/null|cat -n | sed -e '
           {s/\([0-9]*\)\(\t\)\(.*\)/echo "#\1 sur '$TT' \3 \n$\(\(\1 * 100 \/ '$TT'\)\)"/e}
    ' 2>/dev/null|zenity --progress --width=600 --title="Sauvegarder $LABEL" --text="Initialisation de la sauvegarde....."  --percentage=0 --auto-close  || ERROR ;

qui a une idée

merci


archlinux 64 Bits
Portable ASUS i5

Hors ligne