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 > [email protected] > http://forum.linux-gull.ch/mailman/listinfo/gull _______________________________________________ gull mailing list [email protected] http://forum.linux-gull.ch/mailman/listinfo/gull
