Migrer un serveur de fichiers avec Robocopy
Je vous propose une méthode de migration de fichiers basée sur l’utilisation de Robocopy. Il existe de nombreux outils, plus ou moins complexes, avec une interface plus ou moins attrayante, mais le plus performant de part ses options et ses caractéristiques reste selon moi Robocopy. En plus il est GRATUIT !
Les préparatifs …
Tout d’abord téléchargez et installez la dernière version de Robocopy disponible sur le Kit de Ressources Windows 2003.
robocopy.exe sera installé dans C:\Program Files\Windows Resource Kits\Tools.
Si vous avez installé le Kit de ressources sur votre station d’administration, copiez robocopy.exe sur le C:\ du serveur sur lequel vous souhaitez migrer les données, votre nouveau serveur de fichiers.
Connectez vous sur le nouveau serveur de fichier et ouvrez une invite de commande.
Tapez cd\ afin de vous positionner sur le C:\ de votre nouveau serveur. Vous pouvez ainsi accéder à robocopy.exe
A noter que si vous installez le Kit de ressource directement sur votre nouveau serveur, celui ci sera référencé dans le “Path” du serveur ce qui rendra Robocopy accessible depuis n’importe quelle emplacement de votre ligne de commande.
Le principe de la migration
Pourquoi prévoir une longue interruption de la production pour migrer plusieurs centaines de méga octets voir de téra octets ? Il est possible de lancer la copie des fichiers du serveur source vers le serveur cible plusieurs jours en avance puis de réaliser une mise à jour de temps en temps afin de n’avoir que très peu de modification à synchroniser.
Ainsi le jour J il ne reste plus qu’à couper l’accès aux utilisateurs à l’ancien serveur, lancer une dernière synchronisation, puis d’établir l’accès sur le nouveau.
Vous pouvez même vous simplifier la vie en redonnant l’ancien nom de serveur au nouveau serveur, ce qui vous évitera de mettre en place des scripts de migration des lecteurs réseaux de vos utilisateurs
. Bien entendu s’il suffit de modifier le logon script de vos utilisateurs pour les faire pointer vers le nouveau serveur, un changement de nom ne posera pas de problème. Pensez toutefois à bien communiquer auprès des utilisateurs en leur demandant de ré-ouvrir leur session au moment voulu pour que le nouveau mappage soit pris en compte!
Construire son script
Robocopy propose de nombreuses options parfois complexes et qui seront bien souvent inutiles. Concrètement lorsque l’on veut déplacer des données d’un serveur vers un autre, l’idéal est de conserver exactement la même arborescence et de récupérer les droits NTFS associés.
Pour lancer la copie d’un partage source vers un partage cible il faut lancer la commande suivante:
robocopy "\\serveursource\share" "\\serveurcible\share"
Mais il sera possible d’agrémenter cette commande grâce à de nombreuses fonctionnalités !
/MIR : Cette option permet de reporter les changements de la source vers la cible. Si un fichier est créé sur la source il va être copié vers la cible. Si un fichier est supprimé sur la source, il le sera également sur la cible.
/SEC : Cette autre option géniale permet de migrer également les droits NTFS !
/LOG : Autant garder un historique de la copie. Cette option désactive le “verbose” à l’écran. Voir l’option qui suit !
/TEE : Lorsque l’on utilise /LOG l’intéractivité à l’écran peut être conservé grâce à cette option
/MON:x : Permet de lancer la commande en mode monitor, c’est à dire que la commande va rester active et attendre un certain nombre x de changements apportés sur la source pour les copier sur la cible. Ainsi la première fois tout va être copié et la commande va attendre les changements.
/RH:hhmm-hhmm : Cette option permet de lancer le script qu’à une certaine plage horaire, très pratique si vous préférez lancer la copie la nuit.
/MOT:x : Idem que /MON mais cette fois x correspond à un nombre de minutes d’attente avant de relancer la synchro.
Grâce à ces quelques options, il en existe beaucoup d’autres, j’effectue mes migrations très simplement.
Je lance mes commandes depuis une invite de commande ou depuis un fichier batch si j’ai plusieurs partages localisés un peu n’importe ou …
Quelques jours avant le changement de serveur je lance ma première copie grâce à la commande suivante :
robocopy "\\serveursource\share" "\\serveurcible\share" /MIR /SEC /RH:2000-0700 /TEE /LOG+:c:\journal.log
De cette manière ma copie se déroule de 20h à 6h du matin. Si mon volume de données à copier est tel que cela n’a pas suffit ! Je peux le relancer une seconde fois …
Lorsque tout est copié, j’utilise plutôt la commande suivante:
robocopy "\\serveursource\share" "\\serveurcible\share" /MIR /SEC /MOT:10 /TEE /LOG+:c:\journal.log
Cette fois, toutes les 10 mn, les changements vont être synchronisés !
Et pour finir le jour de la bascule, je coupe l’accès aux utilisateurs et je lance :
robocopy "\\serveursource\share" "\\serveurcible\share" /MIR /SEC /TEE /LOG+:c:\journal.log
Ensuite je change le nom des serveurs afin de nommer mon nouveau serveur comme l’ancien et ma migration est terminée ! je prend soin de supprimer mon script afin de ne pas le relancer par accident …
A lire également
Comment éviter les problèmes d’accents avec Robocopy






Bonjour, y a t-il une commande pour pouvoir copier les fichiers d’un partage sécurisé? merci
Bonjour,
J’aurais vraiment besoin de vos connaissances, j’ai deux dossiers, l’un a toto en lecture/ecriture et l’autre a toto en lecteure seule
comment puis je faire pour rajouter les droit ecriture vers le dossier dans lequel tot a accès en lecteure seule avec robocopy ?
Cordialement
[...] vous aviez l’habitude d’utiliser un logiciel (Cobian Backup, Areca Backup, …) ou un script robocopy pour sauvegarder vos répertoires importants entre votre ordinateur et votre clé USB, et bien [...]
Question 1 : Est ce robocopy peut effectuer la copie des données d’une base de données comme sql server d’un serveur a un autre
Question 2 : Ecst ce qu’on peut programmer la commande de telle sorte qu’elle puice s’executer a des intervalles de temps donnés com par exemple apres chaque 1 heure et en ne prenant en compte que les fichiers modifiés
Q1 : Oui si le moteur SQL est arrêté pendant la copie.
Q2 : Oui avec le paramètre /MOT:m ou m = le temps le minutes.
@ Raoul68
Sauf si je ne m’abuse, moi même ayant le même projet sous peu, les nas qnap tournent sous linux et ont donc un système de fichier ext3 qui ne prend pas en compte les permissions ntfs typiques aux systèmes windows, d’où ton erreur.
La solution est de donner accès en lecture ou lecture/écriture a ces partages via des groupe appropriés
Tout fonctionne sauf que mes droits NTFS ne sont pas récupérés sur le dossier s’il n’y a pas de fichier directement derrière celui ci.
Par exemple sur la cible x:\dossier1\dossier2\dossier3\fichier.doc
Les droits seront seulement attribuer à dossier3 et fichier.doc.
dossier1 et dossier2 garderont les droits du parent destination alors que ceux du parent sont différent.
Pourtant j’utilise /copyall qui permet de tout copier (droits, attribut, propriétaire, etc …)
Quelqu’un a t’il résolu le problème ?
Merci
Bonjour,
Voici mon problème, je plante le décor :
Environnement Windows 2003 serveur R2 avec un domain (on va l’appellé “domain”).
Une petite centaine d’utilisateurs, et un serveur de fichiers (mon contrôleur Active Directory) plein à 80% voir 95% (je sais, saymal) que l’on va appeller AD
-
J’ai acheté un NAS (QNAP TS-419) que j’ai bien intégré dans mon domain, l’importation des utilisateurs/groupes depuis l’AD semble correcte sur le soft QNAP, enfin bon, jusque là, tout semble ok.
-
J’ai un gros répertoire (7000 dossiers/300 000 fichiers) sur mon AD, que je veux balancer sur le NAS, avec robotcopy GUI; mes options sont
-
/SEC Cette autre option permet de migrer également les droits NTFS
/COPYALL Copie tout
/E inclut les répertoires vides
/R /W option de relance en cas de pb
-
-
En retour, j’ai une erreur de droits sur chaque fichier :
New File 6144 Thumbs.db
2011/07/31 13:31:36 ERROR 1314 (0×00000522) Copying NTFS Security to Destination Directory E:\data\Administatif (YF-OF-CB)\
Le client ne dispose pas d’un privilSge n’cessaire.
-
Alors, je comprends bien que c’est un problème d’autorisation, si je teste depuis AD (le serveur principal) d’ajouter des droits sur le NAS, il ne les prend pas en compte, et j’ai même l’impression, qu’il ne garde que les autorisation locales du NAS.
-
Est-ce assez clair ?
Quelqu’un aurait-il déja eu ce soucis ?
[...] http://syskb.com/migrer-un-serveur-de-fichiers-avec-robocopy/ [...]
[...] Source [...]
Merci beaucoup pour le tuto
Bonjour, qu’en est-il des dossiers partagés ?
Merci pour le tuto !
[...] source : http://syskb.com/migrer-un-serveur-de-fichiers-avec-robocopy/ [...]
[...] de se rendre sur la page que l’on souhaite vérifier. Par exemple dans mon article intitulé Migrer un serveur de fichier avec Robocopy, un certain Fonz laisse le commentaire suivant: “Très clair merci”. Si vous passez [...]
[...] On ne présente plus Robocopy. Même s’il en existe une version GUI, la version en ligne de commande de cet outil de copie de données est indéniablement plus puissante. Je l’utilise pour les migrations de fichiers de plusieurs Téraoctets car il est possible de tout scripter. Par exemple on peut lancer une copie de fichiers plusieurs jours avant une date de bascule définit, la nuit uniquement et de manière à ce que les modifications soient périodiquement copiées. Clairement une fois le script paramétré et testé il n’y a plus que de la com à faire … Si vous souhaitez en savoir plus un article est dédié à l’utilisation de Robocopy [...]
bonjour, j’ai le même problème avec robocopy et les accents. Le test dir fonctionne très bien.
Avez vous finalement résolu le souci.
Cordialement
Il faut ajouter la commande “chcp 1252” avant de lancer ton script afin que les accents soient bien pris en compte.
Cris,
Je suis très surpris par ton problème d’accent. J’ai comme l’impression que ton interpréteur DOS ne comprend pas le français
. Peux tu aller voir dans tes paramètres régionaux si tu utilises bien le bon language.
Je ne pense pas que cela robocopy soit la cause du problème. Essayes de lancer une autre commande comme :
dir “Données”
@+
Hananen
Tu utilises le /ETA pour afficher le pourcentage et le /NP qui lui annule tout affichage …
. Enlève le /NP (No Progress) et ca va fonctionner @+
bonjour
j’ai fais un test de copie de dossier du disque c vers d , et je voudrais pouvoir voir le pourcentage de copie , j’arrive pas , dans ma ligne de commande y a pas le NP ;
robocopy “\\cbi17931\c$\save” d:\sauvfich /E /SEC /LOG /NP /ETA /TEE /R:5 /W:5
Merci pour cet article, robocopy c’est super, sauf que je rencontre un problème avec les accents, pourtant j’utilise EDIT pour faire le BAT, sinon super outil.
à+
Cris
PS: Si vous avez une solution pour les chemins avec accent dans robocopy je suis preneur, car il interpréte le chemain “\Donn,es” au lieu de “\Données”
Très clair merci !