[gull] Progress pour cp

Cyril Jaquier cyril.jaquier at jaqpot.net
Fri Sep 30 14:45:26 CEST 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Salut Christophe,

cp -Rv a/ b/ | while read; do echo -n "."; done

Ca devrait tourner sous MacOSX si y'a du bash.

A+
Cyril



On 09/30/2011 02:23 PM, Christophe Pochon wrote:
> Bonjour !
> 
> Je me suis mis en tête de réaliser un script pour automatiser la 
> sauvegarde des données essentielles des utilisateurs sur le réseau
> de mon entreprise. Le contexte, c'est que dans deux semaines je
> vais installer un nouveau serveur et je veux éviter de récupérer 
> l'intégralité des homes des utilisateurs, pour éviter d'importer
> des trucs qui ne servent à rien ou qui pourrait foutre le bordel.
> 
> Je veux que ce soit les utilisateurs qui lancent chacun le script,
> qui va créer un fichier zip qu'ils vont manuellement copier sur une
> clef USB. Quand le nouveau serveur sera en route, ils vont ouvrir
> leur nouvelle session (avec sans doute un identifiant différent de
> l'actuel) et lancer un autre script (qui sera avec mon zip sur leur
> clef), qui va tout remettre où ça doit.
> 
> Comme je ne suis pas un monstre niveau expérience dans les scripts,
> j'ai passé pas mal d'heures à faire un truc qui fonctionne. Et ça
> fonctionne ! Ca copie tout ce que je veux sauvegarder dans un
> répertoire temporaire, puis ça fait un zip avec le tout et ensuite
> ça efface les données temporaires et ça génère le script pour
> l'import.
> 
> Mais comme je suis perfectionniste, j'ai voulu modifier mon script
> pour qu'il donne un feedback un peu plus parlant aux utilisateurs.
> Je voudrais mettre pour chaque groupe de copie de fichiers, puis
> pour la génération du zip, une sorte de "progress bar", en fait,
> avec juste des petits "." qui s'alignent côte à côte, pour que
> l'utilisateur se rende compte que mon script est bien en train de
> travailler, qu'il n'a pas planté. Ma foi, si ça copie un fichier de
> 4GB, ben y aura quand même qu'un petit point, mais c'est mieux que
> rien. Donc l'idée s'était de récupérer la sortie "verbeuse" de la
> commande "cp", et transformer chaque ligne de ladite sortie en un
> petit point. En faisant :
> 
> cp -Rv $HOME/Documents /Users/Shared/temp/ | sed s/^.*$/./
> 
> Ca fonctionne à peu près, sauf que ça me met un retour à la ligne
> après chaque "." alors que les voudrais côte à côte.
> 
> En faisant :
> 
> cp -Rv $HOME/Documents /Users/Shared/temp/ | sed s/^.*$/./ | tr -d
> '\n'
> 
> Ca me donne le résultat désiré, mais d'un bloc ! Ca fait toutes
> les copies, et à la fin j'ai plein de petits points qui
> apparaissent d'un seul coup.
> 
> Alors, après des heures de recherches sur le net, je me dis qu'il y
> a bien un gourou sur cette liste qui va me pondre une solution en
> deux coups de cuiller à pot....
> 
> Dites-moi si vous voulez voir tout mon script.
> 
> Ah, et c'est loin d'être un détail : ce script doit tourner sous
> OSX !!!
> 
> Merci mille fois !
> 
> Christophe Pochon http://www.christophe-pochon.com
> 
> 
> 
> _______________________________________________ gull mailing list 
> gull at forum.linux-gull.ch 
> http://forum.linux-gull.ch/mailman/listinfo/gull

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk6FueEACgkQlYy8cEwUMaQslACfQuiWtbBz7Y7AQAMu77vNPavV
85sAn2f4PH41Xyq2UOLWifeivVXUDcdH
=31u9
-----END PGP SIGNATURE-----


More information about the gull mailing list