Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1037 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  configuration de Robocopy (scripts)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

configuration de Robocopy (scripts)

n°2765512
vipclimax
Posté le 17-03-2008 à 14:05:51  profilanswer
 

Bonjour à tous,
 
Dans le cadre de mon travail je dois faire en sorte de maintenir à jour un dossier partagé sur un ordinateur portable en rendant disponible une copie de ce dossier sur un disque dur externe relié au serveur.
J'ai utilisé Robocopy GUI pour créer des scripts qui me permettront de mener à bien cette tâche. Je veux avoir 2 scripts le premier me permettant de faire une première copie intégrale d'un répertoire source (dossier partagé du portable) vers un répertoire cible (dossier sur disque dur externe).
 
Mes tests sont concluants mais je veux ici avoir la confirmation que mes paramètres sont corrects et ne poseront pas de problème à l'avenir.
 
 
InitScript.cmd - Script pour la copie initiale (rien n'existe dans le répertoire cible) :
 
robocopy "\\portable\partage$" "F:\_DATA" /E /COPYALL /V /NP /LOG+:"F:\RobocopyLOG.txt" /ZB
/R:10 /W:30

 
/E -> copier même les dossiers vides
/COPYALL -> tout copier
/V -> donner le résumé de la copie
/NP -> masquer l'indicateur de progression de la copie
/LOG+ -> inscrire les infos de copie dans RobocopyLOG.txt et ajouter les infos de copie à la suite de ce fichier
/ZB -> copie en mode "redémarrage si plantage", passage en "mode normal" si échec de copie
/R -> réesayer 10 fois de copier si plantage
/W -> attendre 30 secondes entre chaque tentative (cf: /R)
 
 
 
Une fois la première copie réalisée je veux maintenant automatiser la mise à jour des dossiers/fichiers contenus dans le dossier du portable. Ainsi, ce script mettra à jour les modifications effectuées dans le répertoire source de telle sorte que le dossier sur le disque dur (cible) soit une copie parfaite du répertoire du portable (source).
 
 
MajScript.cmd - Script pour maintenir à jour l'arborescence (la copie initale a eu lieu) :
 
robocopy "\\portable\partage$" "F:\_DATA" /MIR /V /NP /LOG+:"F:\RobocopyLOG.txt" /ZB /R:10
/W:30

 
/MIR -> cloner une arborescence
 
 
 
Au final, j'utiliserai le planificateur de tâches pour lancer "MajScript.cmd" tous les jours à 13h. En sachant que le
répertoire source est un dossier partagé sur un ordinateur portable je pense faire la chose suivante pour qu'aucun problème d'authentification ne se manifeste...
 
@NET USE P: \\portable\partage$ mot_de_passe /USER:nom_utilisateur
@robocopy "P:" "F:\_DATA" /MIR /V /NP /LOG+:"F:\RobocopyLOG.txt" /ZB /R:10 /W:30

 
Ainsi, le script "MajScript.cmd" va tout d'abord affecter le lecteur réseau "P:" au partage masqué "\\portable\partage$" ayant comme nom d'utilisateur "nom_utilisateur" et comme mot de passe "mot_de_passe". Ensuite, robocopy effectue un clone de "P:" (source) vers "F:\_DATA" (cible). Enfin, avec le planificateur de tâches ce fichier "MajScript.cmd" est lancé tous les jours à 13h
 
 
QUESTIONS:
 
1) Est-ce que mes scripts sont corrects (à la vue de mes tests persos oui mais je débute avec Robocopy et peut-être que des pros de cet utilitaire pourront m'aider à les améliorer) ?
 
2) Le dossier source (sur un ordi portable) n'est pas toujours accessible sur le réseau (portable hors base) et je
voulais savoir ce qui se passe si MajScript.cmd se lance à 13h et que le chemin réseau "\\portable\partage$" est introuvable ?
 
Tout commentaire est le bienvenu, je débute avec Robocopy mais je sais précisément ce que je veux faire de cet utilitaire que je trouve génial!
 
A bientôt et merci pour votre attention
-vipclimax-

mood
Publicité
Posté le 17-03-2008 à 14:05:51  profilanswer
 

n°2765519
gouiy@ume
Posté le 17-03-2008 à 14:28:25  profilanswer
 

pourquoi pas un /MIR direct directement, ça marche très bien.
 
De plus, /R:10 /W:30, par expérience je trouve ça trop, imagines que t'as une centaine de petits fichiers qui déconne, ta copie va être méga longue, perso je mets /R:3 /W:1, et si vraiment ça passe pas je me débrouille après grace au log

n°2765558
djobidjoba
Posté le 17-03-2008 à 16:56:15  profilanswer
 

pour le 2) regarde du coté du mot clé ERRORLEVEL sous dos qui te permettra de ne pas lancer robocopy si net use en erreur.

n°2765577
vipclimax
Posté le 17-03-2008 à 18:13:16  profilanswer
 

Merci pour vos réponses!
 
Bien vu gouiy@aume pour les paramètres "/R" et "/W" je vais mettre les mêmes paramètres que les tiens.
 
djobidjoba -> effectivement mon script serait nickel si je pouvais lui indiquer de ne pas déclencher "robocopy" si le "net use" est en erreur par contre je vois pas trop comment retranscrire ça dans mon script final... quelqu'un peut me donner un coup de main svp ???

n°2765579
vipclimax
Posté le 17-03-2008 à 18:23:53  profilanswer
 

Je suis sur une piste... le code erreur généré par le "NET USE" lorsque "Le chemin réseau n'a pas été trouvé" est 53 donc...
 
 
If errorlevel 53 if not errorlevel 54 goto sortir
 
:sortir
exit

 
 
Suis-je sur la bonne piste ???

n°2765662
vipclimax
Posté le 18-03-2008 à 00:23:55  profilanswer
 

Je crois bien que je le tiens mon script!
Voilà ce que j'ai mis dans mon Notepad et enregistré sous FinalScript.cmd pour pouvoir après le lancer automatiquement tous les jours à 13h à l'aide du planificateur de tâches Windows...
 
 
@NET USE P: \\portable\partage$ mot_de_passe /USER:nom_utilisateur
@IF ERRORLEVEL 53 IF NOT ERRORLEVEL 54 GOTO exit
:exit
@EXIT
@ROBOCOPY "P:" "F:\_DATA" /MIR /V /NP /LOG+:"F:\RobocopyLOG.txt" /ZB /R:3 /W:1

 
 
Description du script :

  • 1ère ligne = connexion du partage masqué "partage$" au lecteur réseau "P:" ayant comme login/mot de passe d'accès "nom_utilisateur/mot_de_passe"
  • 2ème ligne = Si le chemin réseau de la 1ère ligne n'existe pas aller à la 3ème ligne
  • 3ème et 4ème lignes = destination du script si la condition de la 2ème ligne est remplie / sortie de la fenêtre DOS
  • 5ème ligne = si la condition de la 2ème ligne n'est pas remplie (le chemin réseau existe) clonage de "P:" (source) vers "F:\_DATA" (destination)


Je débute en script et si vous voyez la moindre anomalie (je ne l'ai pas encore testé ce script tel quel mais au travers des tests que j'ai pu faire sur ma propre config ça passe nickel) ou un moyen de faire mieux je suis très preneur! J'ai envie de m'y mettre au scripting on peut faire plein de trucs vraiment pratiques!
 
Merci et j'attends vos commentaires...

n°2765703
djobidjoba
Posté le 18-03-2008 à 10:59:11  profilanswer
 

errolevel renvois 0 si ok

C:\>net use \\xxxxxx
La commande s'est terminée correctement.
 
C:\>echo %ERRORLEVEL%
0
 
C:\>net use \\machine_eteinte
L'erreur système 53 s'est produite.
Le chemin réseau n'a pas été trouvé.
 
C:\>echo %ERRORLEVEL%
2


-il ne faut pas exécuter robocopy si errolevel est différent de 0
-les @ partout alourdissent le code du batch qui déjà à la base n'est pas très lisible.
-tu peux aussi utiliser des arguments lors de l'appel de ton script afin de ne pas avoir à le réécrire pour chaque poste.
de cette manière ton script peut s'appeler dans le planificateur de tâche : script.cmd password login
 

@echo off
net use P: \\portable\partage$ %1 /USER:%2
if not errorlevel 0 goto fin
ROBOCOPY "P:" "F:\_DATA" /MIR /V /NP /LOG+:"F:\RobocopyLOG.txt" /ZB /R:3 /W:1  
fin:

n°2765870
vipclimax
Posté le 18-03-2008 à 18:25:55  profilanswer
 

djobidjoba je te remercie beaucoup d'avoir pris le temps de me conseiller comme ça. Je progresse grâce à ces conseils.
 
J'ai fait plusieurs tests aujourd'hui... Le problème de mon script (celui avant ta dernière réponse) c'est que si le chemin réseau est trouvé il interprète le "@EXIT" de la 4ème ligne... donc la ligne qui m'intéresse, la 5ème, n'est pas exécutée même si le chemin réseau est trouvé... c'est balot !
Si je place ":exit" (3ème ligne) puis "@EXIT" (4ème ligne) après "@ROBOCOPY" il m'exécute quand même Robocopy même si le chemin réseau est introuvable... c'est balot aussi !
 
Ton script a l'air nickel et puis le coup des variables "%1" et "%2" pour passer des arguments au moment de l'appel du fichier ça me  plait bien.
 
Merci encore à toi!

n°2766509
vipclimax
Posté le 20-03-2008 à 10:12:00  profilanswer
 

Bonjour,
 
Je me permets de revenir sur le script... il y a quelque chose qui m'échappe.
 
@echo off  
net use P: \\portable\partage$ %1 /USER:%2  
if not errorlevel 0 goto fin  
ROBOCOPY "P:" "F:\_DATA" /MIR /V /NP /LOG+:"F:\RobocopyLOG.txt" /ZB /R:3 /W:1  
:fin
 
On est d'accord que le code erreur renvoyé lorsque le chemin réseau est introuvable est différent de 0
donc "if not errorlevel 0 goto fin" veut bien dire "si le code erreur n'est pas 0 aller à la fin" et normalement il zappe la ligne lançant robocopy pour aller direct a la ligne ":fin".
 
J'ai fait un test tout bête avec le script suivant :
 
@echo off
net use P: \\portable\partage$
if not errorlevel 0 goto fin
WINVER
:fin
pause
 
C'est le même script que celui plus haut avec "WINVER" à la place de "ROBOCOPY" mais le comportement du script doit être le même... le "pause" de la fin c'est juste pour voir ce qui se passe dans la fenêtre DOS.
Le chemin réseau est introuvable donc code différent de 0 il devrait normalement aller à "pause" directement sans interpréter la ligne "WINVER"... ce n'est pas le cas g la boite de la version Windows qui s'affiche systématiquement même si le chemin réseau "\portable\partage$" est introuvable... je capte pas ???


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  configuration de Robocopy (scripts)

 

Sujets relatifs
PeerCast! configuration!Configuration Packard Bell. Besoin d'aide.
configuration envoi emailconfiguration de deux boites aux lettres exchange sous outlook
Veille prolongée / Configuration alternativeDisparition panneau de configuration et autres ...
Disparition du panneau de configurationConfiguration d'internet explorer
Icône mystérieuse dans le Panneau de configuration 
Plus de sujets relatifs à : configuration de Robocopy (scripts)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR