RoboCopy

Description de la commande ROBOCOPY

Copie de fichiers robuste pour Windows

RoboCopy est un utilitaire en ligne de commande pour la réplication de dossiers. Il fait partie des logiciels installés par défaut avec Windows depuis la version Vista.

RoboCopy est comparable à la commande XCOPY mais possède plus d'options et offrent donc plus de possibilités pour la configuration des scripts de sauvegarde.

RoboCopy est aussi nettement plus rapide que XCopy pour la recherche des fichiers à copier : Lors des sauvegardes, on ne sauve souvent que les fichiers qui ont été modifiés depuis la sauvegarde précédente. La recherche des fichiers modifiés nécessite la comparaison de nombreux fichiers répartis dans de nombreux dossiers et sous-dossiers.

Les copies faites avec RoboCopy peuvent prendre en compte les attributs et les informations d'appartenance des fichiers.

Robocopy est capable de reprendre une copie momentanément interrompue par une défectuosité des transmissions sur le réseau. En cas d'échec, le nombre de tentatives ou le délai avant l'abandon de cette copie peut être configuré avant d'autoriser le passage au fichier suivant.

Format imprimable

Le fichier pdf que voici est une adaptation commentée de l'aide obtenue par le commande ROBOCOPY / ?

Les options de RoboCopy sont trop nombreuses pour pouvoir deviner facilement ce qu'elles donnent comme résultat. La commande RoboCopy ne fonctionne bien que si elle configurée dans un fichier de commande testé avec soin.

Exemples de script utilisant RoboCopy

Mise en garde !

L'auteur de ces lignes ne peut être tenu responsable de fausses manœuvres qui résulteraient de l'utilisation des exemples qui suivent. Ces commandes qui copient des dossiers et des fichiers en grandes quantités sont dangereuses si elles ne sont pas programmées avec prudence.

Script de sauvegarde sur une clé USB

Imaginons un script destiné à sauver un dossier et l'ensemble des fichiers et autres sous-dossiers qu'il contient sur une clé USB.

But du script

Le dossier à copier est le dossier C:\Projets
On vérifiera que la clé contient déjà à sa racine un dossier de même nom pour éviter de copier le dossier Projet sur n'importe quelle clé. Imaginons par exemple qu'il y ait deux clés branchées sur le PC. Elles pourraient prendre les noms de volume E : et F : Il faut pouvoir déterminer laquelle est celle qui sert de backup.

Réalisation

Le script, dans un premier temps, teste l'existence du dossier Projets sur les clés qui sont éventuellement branchées sur l'ordinateur. Le résultat de ce test est noté dans la variable Clef. En cas d'échec le script affiche un message d'erreur et ne fait plus rien d'autre.
Sinon, voici le détail des arguments et des options choisies :

C:\%Dossier% Représente le nom du dossier à sauver. La variable Dossier est définie une fois pour toute au début du script. Cela permettra d'adapter rapidement ce script à d'autres dossiers.
%Clef%\%Dossier%   Est le chemin du dossier de destination
/E Copie des sous-dossiers même vides
/R:1 En cas d'échec ne faire qu'un seul nouvel essai
/W:1 En cas d'échec attendre une seconde pas plus. Cela laissera le temps de voir les messages d'erreur à l'écran
/XA:S Exclure les fichiers système (les fichiers Thumbs.db par exemple)
/XF *.tmp *.bak Exclure les fichiers de type .tmp et .bak (fichiers considérés comme sans intérêt)
/TEE Exclure les fichiers anciens qui n'ont pas été modifiés depuis la dernière sauvegarde.
/LOG:%dossier%.log   Redirection vers un fichier journal dont le nom est composé à partir du nom du dossier sauvé.
@Echo Off
		
Echo Sauvegarde d'un dossier du PC sur une clef USB
Echo La clef USB contient deja un dossier de meme nom
Echo On ne copie que fichiers modifies depuis la derniere sauvegarde
Echo.
	
Set Dossier=Projets
Set Clef=Inconnue

If exist E:%Dossier% set Clef=E:
If exist F:%Dossier% set Clef=F:
If exist G:%Dossier% set Clef=G:
	
If %Clef%==Inconnue (
	Echo La clef USB n'a pas ete trouvee
	Goto :Fin	
)
RoboCopy C:\%Dossier%  %Clef%\%Dossier% /E /R:1 /W:1 /XA:S /XF¨*.tmp *.bak /XO /TEE /LOG:%Dossier%.log
:Fin
Pause

Script de synchronisation entre un PC de bureau et un portable

But du script

Ce script est destiné à synchroniser les sous-dossiers "Cours" de dossiers partagés qui sont en principe identiques sur un PC de bureau appelé ici "DeskTop" et un Pc portable appelé ici "LapTop". L'utilisateur travaille généralement sur son PC de bureau mais il fait aussi des modifications sur son ordinateur portable quand il est en déplacement. Le but de la synchronisation est d'avoir un script qui va faire la mise à jour automatique d'un PC vers l'autre. La synchronisation se fait en écrasant les fichiers les plus anciens avec les fichiers les plus récents.

Réalisation

La synchronisation est faite par deux commandes successives : la première du PC de bureau vers le PC portable et la seconde dans l'autre sens. L'option /XO limite les copies aux fichiers qui ont été modifiés.

Le script commence par tester les noms des ordinateurs. On évite de cette manière qu'il ne soit lancé sur des ordinateurs qui ne seraient pas les bons.

L'utilisation de ce script demande d'autres précautions :

C'est par prudence aussi que les options /MIR ou /PURGE ne sont pas prises.

If /I %COMPUTERNAME% NEQ LapTop (
  If /I %COMPUTERNAME% NEQ DeskTop (
    Echo Ce script n'est pas prevu pour tourner sur le PC : %COMPUTERNAME%
    Goto :Fin
  )
)
RoboCopy \\DeskTop\Partage\Cours \\LapTop\Partage\Cours /E /XA:S /XO /TEE /LOG:Sync_Cours.log
RoboCopy \\LapTop\Partage\Cours \\DeskTop\Partage\Cours /E /XA:S /XO /TEE /LOG+:Sync_Cours.log
:Fin

    Valid XHTML 1.0!