Astuce pour synchroniser des données

Astuce pour synchroniser des données

4 janvier 2016 1 Par Michael PERES

Voici un tuto qui va vous aider à synchroniser vos données sensibles à moindre coût grâce à "Robocopy"

Voici une brève description sur cet utilitaire :                                                                              Robocopy est un utilitaire puissant qui à l’avantage d’être intégré au système d’exploitation depuis Windows Vista, mais qui est disponibles via les Ressource Kits des différents systèmes Microsoft, et ce depuis NT 4.0.

Il s’agit d’un utilitaire de copie en ligne de commandes, dont voici les fonctionnalités appréciables :

  • Tolérance de perte du lien réseau et reprise de la copie une fois le lien rétabli.
  • Préservation des métadonnées temporelles, du créateur proprietaire, des ACLs NTFS, et informations d’audit.
  • Copie persistante, paramétrage du nombre de nouvelles tentatives à opérer sur un fichier.
  • Mode mirroir permettant de copier et supprimer les fichiers de l’emplacement de destination s’ils le sont sur l’emplacement source.
  • Possibilité de ‘passer’ les fichiers déjà copiés sur la destination et dont les métas données n’ont pas été modifiées (copie différentielle).
  • Indicateur de progression via l’invite de commandes.
  • Possibilité de copier des fichiers et répertoire dont les noms excèdent 256 caractères (jusqu’à 32 000 caractères en limite théorique).
  • Multithread (sous Windows 7 Uniquement).
  • Code de retour pour programmation de batchs.

Limitation principale : Robocopy ne prend pas en charge les fichiers ouverts.

Si vous disposez d'un environnement virtuel, physique ou hétérogène, voici une petite astuce qui vous permettra de réaliser un mini PRA à moindre coût.

L'idée est de synchroniser les données d'un disque (généralement autre que le disque système), afin de pouvoir reprendre rapidement l'activité en cas de crash d'un site, d'une baie de stockage ou autre, évitant ainsi une coupure de production trop importante liée au temps de restauration par exemple.

Pour cela, nous utiliserons une infrastructure VMware, mais ça marche aussi très bien avec Hyper-v. 🙂

Tout d'abord, vous devrez avoir soit virtualisé votre disque système s'il s'agit d'un serveur physique, soit cloné votre disque système s'il s'agit d'une VM. Cependant, ces deux machines devront être chacune en fonctionnement, et ne devront donc pas avoir le même nom sur le réseau, ni la même adresse IP. Ces informations seront à modifier en cas de crash après la bascule.

Commencez par récupérer l'utilitaire "Robocopy" ici. Créez ensuite un répertoire "robocopy" sous c:\ sur le serveur qui recevra les données et non sur le serveur d'origine, puis procédez à l'extraction du fichier "robocopy.exe" dans ce répertoire.

Copiez le script ci-dessous dans un fichier texte, puis enregistrez-le avec l'extension ".bat" dans le même répertoire que le fichier "robocopy.exe".

robocopy "\\192.168.1.100\d$" "\\localhost\d$" /MIR /SEC /MOT:10 /TEE /LOG+:c:\logRobocopy-e.log /XD "\\192.168.1.100\e$\System Volume Information" "\\192.168.1.100\e$\RECYCLER"

Explication du script :

Robocopy (qui se trouve donc sur le serveur 192.168.1.115), se connecte sur le disque D:\ du serveur 192.168.1.100, en mode mirroir, de façon à ne copier que les fichiers qui ont été modifiés, toutes les 10 minutes. voici les explications des différentes options utilisées ici.

  • /MIR : Met en miroir une arborescence de répertoires
  • /SEC : Copie les fichiers avec leur sécurité
  • /MOT:x Surveille la source et s'exécute toutes les x minutes si des modifications sont détectées.
  • /TEE : Écrit la sortie de l'état dans la fenêtre de console, ainsi que dans le fichier journal.
  • /LOG+ : Écrit la sortie de l'état dans le fichier journal (ajoute la sortie au fichier journal existant)
  • /XD : Exclut les répertoires qui correspondent aux chemins d'accès et les noms spécifiés.

Prenez soin de modifier ce script en fonction de votre infrastructure, et à ajuster la fréquence d'execution selon la quantité de données modifiées.

Nous allons à présent synchroniser les disques D:\ de deux VMs (serveur 192.168.1.100 vers le serveur 192.168.1.115). Nous ne procèderons pas à la synchronisation du disque C:\ puisque celui-ci aura été cloné au préalable. (veillez cependant à ce que les noms des serveurs ne soient pas identiques sur le réseau)

Capture d’écran 2016-01-04 à 11.13.34

Voilà. Vos données pourront-être synchronisées, sur deux sites distants à travers le réseau. il faudra cependant veiller à dédier une bande passante assez large pour la première synchro, si la taille de vos données est conséquente.

Conseil :

Idéalement, si vous disposez d'un peut d'espace, il est préférable de cloner le disque système de votre serveur d'origine, en prenant soins de ne pas l'allumer une fois l'opération de clonage terminée. En parallèle, installez une nouvelle VM avec laquelle vous synchroniserez vos données tel qu'expliqué ci-dessus. Cela permettra en cas de crash, de détacher votre disque de données (vmdk ou vhd), et de le rattacher à votre serveur cloné puis de le démarrer. De cette manière, inutile de modifier le nom et l'adresse réseau de votre serveur.

Veillez cependant à effectuer régulièrement les mêmes modifications (mise à jour, patchs, etc…) sur les deux serveurs.