[gull] Progress pour cp

Jean-Pierre Rupp jpierre at xeno-genesis.com
Sun Oct 2 13:34:03 CEST 2011


Tu peux utiliser rsync avec les options -v et --progress comme
remplacement de cp.


Le vendredi 30 septembre 2011 à 14:23 +0200, Christophe Pochon a écrit :
> 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




More information about the gull mailing list