Table de Matieres
I. Présentation
Robocopy est un outil en ligne de commande permettant d’effectuer des tâches de copies de fichiers et de répertoires. Il propose de nombreuses options, dont une option intéressante qui permet de faire un miroir d’une arborescence c’est-à-dire de rendre identique l’arborescence source avec celle de destination. Autrement dit, cela permet de faire une sauvegarde d’un répertoire vers un autre en s’assurant que les deux soient identiques, c’est la raison pour laquelle on parle de « miroir ».
Lors de la première exécution, le miroir doit être construit étant donné que la destination est vide, Robocopy copie donc tout ce qui est contenu dans la source vers le répertoire de destination. Lors des prochaines exécutions, les nouveaux répertoires et fichiers seront copiés, ainsi que tout ce qui est modifiés, et sera supprimé tout ce qui se trouve dans la destination et qui n’est plus dans la source. Toujours dans le but d’avoir deux arborescences identiques.
Dans ce tutoriel, nous allons donc écrire un script Batch qui prend une arborescence source et crée une arborescence de destination qui lui est identique.
Pour rappel, Robocopy n’est pas disponible nativement pour Windows XP mais il est contenu dans le « Windows Server 2003 Resource Kit Tools » disponible sur le site de Microsoft.
II. Informations
- Destination : D:\SAV_Documents
Le but est de sauvegarder le répertoire « Documents » de la partition « C » et tout ce qu’il contient, c’est-à-dire l’arborescence complète, dans le répertoire «
SAV_Documents » se situant sur la partition « D ».
III. Le script et explications
REM ----------------- #Constantes ------------------ SET FICHIERS=*.* SET SOURCE=C:\Documents SET DESTINATION=D:\SAV_Documents REM ----------- #Sauvegarde Documents --------------- robocopy "%SOURCE%" "%DESTINATION%" "%FICHIERS%" /MIR
- REM : Cette commande permet de faire des remarques dans le script, c’est-à-dire des commentaires sur ce que l’on fait, ce qu’il se passe, etc…
- SET FICHIERS=*.* : Permet de définir une variable “FICHIERS” contenant la valeur « *.* », ce qui signifie qu’on copiera tous les fichiers, de tous les types (il n’y a pas de filtre sur le type de fichiers à copier ou non).
- SET SOURCE=C:\Documents : Permet de définir une variable « SOURCE » contenant le chemin de l’arborescence source.
- SET DESTINATION=D:\SAV_Documents : Permet de définir une variable « DESTINATION » contenant le chemin vers le répertorie où doit être reproduite l’arborescence source.
- robocopy « %SOURCE% » « %DESTINATION% » « %FICHIERS% » /MIR :
On utilise la commande Robocopy avec les 3 variables que l’on a définies au préalable c’est-à-dire qu’on indique à Robocopy la source, la destination, et ce que l’on copie. De plus, on indique « /MIR » qui correspond à la fonction de miroir de Robocopy. Sans cette fonction, le miroir ne fonctionnera pas.
Note : Le répertoire de destination doit être créé manuellement. S’il n’existe pas, l’exécution du script échouera.
IV. Génération de journaux
Robocopy propose également de générer des journaux (logs) sur les différentes commandes exécutées. Pour cela, ajoutez la commande ci-dessous dans la partie « Constantes » de notre script :
SET LOG=C:\ROBOCOPY\%DATE:~0,2%%DATE:~3,2%%DATE:~6,4%_%TIME:~0,2%%TIME:~3,2%.log
Cette commande permet d’indiquer le chemin et le nom du fichier de log, qui se trouvera donc dans « C:\ROBOCOPY ». Le nom du fichier de log est composé de la date (sans les slashs) puis de l’heure d’exécution et est au format « log ». Par exemple, si l’on exécute le script le 19/10/2012 à 19:30, le fichier de log s’appellera : 19102012_1930.log
Ensuite, il faut indiquer à Robocopy qu’il doit journaliser ce qu’il fait et dans quel fichier il doit le faire. Pour cela, à la fin de la commande « robocopy » de notre script, ajoutez ceci :
/LOG:"%LOG%"
Si vous souhaitez écrire le résultat de plusieurs commandes Robocopy dans le même fichier de log, indiquez « /LOG: » à la première commande puis « /LOG+: » aux commandes suivantes pour lui dire d’écrire à la suite, sinon il écrasera le fichier à chaque fois.
V. Le code complet
Pour que ce soit clair, voici le code complet du script avec la génération de journaux :
REM ----------------- #Constantes ------------------ SET LOG=C:\ROBOCOPY\%DATE:~0,2%%DATE:~3,2%%DATE:~6,4%_%TIME:~0,2%%TIME:~3,2%.log SET FICHIERS=*.* SET SOURCE=C:\Documents SET DESTINATION=D:\SAV_Documents REM ----------- #Sauvegarde Documents --------------- robocopy "%SOURCE%" "%DESTINATION%" "%FICHIERS%" /MIR /LOG:"%LOG%"
En cas de problème, je vous invite à créer un sujet dans le forum.
Hébergez votre site à partir de 2$ sur 👉👉👉 https://www.tnctech.ca