RSYNCEZ vos données Windows sur un serveur Linux
Aujourd’hui, je vais aborder la douloureuse question d’une automatisation des sauvegardes pour Windows.
« Pas si douloureuse » penseront certains de vous, en titillant du pointeur de la souris leur icône d’utilitaire préféré.
Et bien si ! Douloureuse ! Car cet article est destiné à tous ceux qui ne sont pas satisfaits de leur process, ou qui souhaiteraient en avoir un, de préférence pas cher, performant et intelligent.
Hérésie profonde, il mariera le monolithe Windows (que ce soit un Server 200x ou un XP/Vista,…) avec la Technologie de l’Autre Monde, Linux.
Voici le matériel associé : une station sous Windows, un serveur sous Linux (avec beaucoup beaucoup d’espace disque), et 3 outils, DeltaCopy -dont vous pouvez vous procurer les sources ici-, nmap et notre fameux package rsync.
Pour la petite explication, DeltaCopy est en fait un compilé de serveur/client rsync et de mappeur de répertoire.
Concrètement, il s’agira pour lui de faire en sorte que le répertoire à sauvegarder soit virtualisé, c’est-à-dire qu’il sera accessible par le chemin DeltaCopyUser@Windowsserver::virtualdirectory. Bien entendu, DeltaCopyUser, Windowsserver et virtualdirectory sont respectivement le User renseigné dans le serveur DeltaCopy, le FQDN ou l’IP du Windows Server et le nom du répertoire virtuel renseigné lors de la création du virtual directory contenant les données Windows à sauvegarder.
Rsync est un outil perfomant permettant de synchroniser 2 espaces. Il est basé sur un mode client / serveur, ce qui revient à dire qu’il lui faut un daemon qui tourne sur notre serveur Linux en l’occurrence, et un process client qui s’y connecte. Pour les curieux et les pointus, rendez-vous sur les man pages (man rsync).
Quant à nmap, il permet d’analyser une machine, locale ou distante, pour vérifier quels ports sont ouverts, quel type d’OS, … Sans vergogne, je vous renvoie sur le site officiel.
Ça a l’air technique, comme ça, mais ce n’est rien du tout en pratique (bah oui, on est sous Windows).
Fonctionnement théorique.
Le fonctionnement est le suivant : le serveur Linux va initier la demande de sauvegarde en root, en spécifiant que la source est sur la machine Windows, et que la destination est locale. Le serveur DeltaCopy installé sur la machine Windows, et qui tourne en permanence, va vérifier la demande (user/password, existence du répertoire virtuel,…) et va ensuite envoyer les données selon les options rsync mentionnées lors de la requête du serveur Linux (sauvegarde différentielle, miroir ou complète, sauvegarde des permissions, …).
Travaux Pratiques.
Prenons le contrôle de votre serveur Linux.
Installez avec la commande d’installation de votre distribution le package rsync.
- Ubuntu / Debian : apt-get install rsync
- Fedora : yum install rsync
- Pour tous les autres, comme c’est vous l’ASR, je vous laisse farmer
Assurez-vous que de rsync est actif et tourne effectivement bien avec un petit ps -aux | grep rsync| grep -v grep.
La ligne suivante (ou sa sœur) doit vous être retournée.
root 2955 0.0 0.0 2128 344 ? Ss Aug28 0:00 /usr/bin/rsync --daemon
Maintenant, vérifions qu’effectivement, le service rsync est joignable depuis une autre machine du même réseau.
Vous devez au moins avoir la ligne 873/tcp open rsync.
# nmap localhost Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2009-10-12 04:37 EDT Interesting ports on nas.localdomain.com (127.0.0.1): (The 1654 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 873/tcp open rsync Nmap finished: 1 IP address (1 host up) scanned in 0.499 seconds
Si c’est ok, alors continuons.
Vu que la requête rsync s’exécute en root, il n’est pas nécessaire de créer un utilisateur dédié, mais sachez qu’utiliser root peut amener à beaucoup de problème en cas de faille, d’attaque, ou toute autre exploitation malsaine des ressources informatiques. Veillez donc bien à ceinturer le périmètre et à updater / patcher / veiller aussi fréquemment que possible votre petit serveur. Attention aux mauvaises surprises !
Il n’y a rien de plus à faire sur notre Linux, attaquons le Windows.
Sous un compte ayant les privilèges nécessaires, installez DeltaCopy (with Installer, soyons fous). Par défaut, il s’installe sous C:\Program Files\Synametrics Technologies\DeltaCopy\. Si vous n’avez aucun souci avec sa localisation, validez et finissez par lancer le programme.
ATTENTION !!! Le premier onglet vous propose d’enregistrer le DeltaCopy Service sur l’OS, ce qui revient à toucher à la base de registre. Ce n’est pas compromettant, mais ça mérite d’être souligné. De plus, cet enregistrement est obligatoire pour pouvoir faire tourner le DeltaCopy Server, sinon il nous est impossible de nous y connecter.
Il faut donc spécifier un utilisateur Windows sous lequel DeltaCopy Server pourra tourner. Cet utilisateur doit avoir les privilèges administrateur, sinon la connexion rsync sera refusée. Il peut être local ou géré par ActiveDirectory.
Sachez tout de même que cet utilisateur pourra être modifiable dans la partie Gestion de l’ordinateur > Services > DeltaCopy Server > Properties > Connexion. Donc rien de grave si vous faîtes une erreur ou si l’utilisateur venait à êre supprimé.
Rendez-vous à l’onglet Virtual Directories et ajoutez une nouvelle instance. Il vous demande un nom de Virtual Directory, pas de panique, donnez-lui en un. Mettons, rsyncbckup.
L’instance est créée, pour la paramétrer, cliquez simplement dessus. Renseignez le Path, c’est-à-dire le chemin du répertoire où se trouve vos données à sauvegarder. Utilisez l’Authentification (Use Authentication) et mentionnez un utilisateur DISTINCT d’un utilisateur existant sur votre poste ou sur ActiveDirectory. C’est un utilisateur fictif qui n’a rien à voir avec les mécanismes d’authentification Windows. Nous l’appelerons MonsieurX.
Tant qu’à faire, donnez-lui aussi un password. A noter que le password apparait en clair dans la GUI (Graphic User Interface). Relancez le serveur DeltaCopy.
Retour sur notre Nunux, ouvrez un shell, et, pour vérifier si tout est en ordre, faîtes un petit export du password de notre utilisateur fictif renseigné précédemment dans la fenêtre du DeltaCopy, seul ayant accès au virtual directory accessible à rsync. Ceci peut être fait de cette manière :
# export RSYNC_PASSWORD="rsyncuser_password"
Puis balancez la sauce sur un répertoire sur lequel vous avez les droits en rwx (read write execute) avec votre utilisateur linux.
Nous avons fait les choses bien, nous avons crée en amont dans notre home (~) un répertoire rsyncbckup avec un
# mkdir ~/rsyncbckup # rsync -avz MonsieurX@Windowsserver::rsyncbckup ~/rsyncbckup/.
L’option v (verbose) vous renverra, si tout fonctionne correctement, un sending incremental list, signe énonciateur d’un rsync qui va commencer.
Petite notification, attention à la longueur des noms de fichiers à rsyncer, chemin compris, aux accents, aux accès concurrentiels, et à tout ce qui pourrait entraîner une erreur lors de la synchronisation. Tout est dit avec un man rsync, mais tout de même, soyez attentifs.
Pour ce qui est des fonctionnalités de DeltaCopy, c’est assez succint mais suffisant pour gérer les dossiers virtuels, il suffit de right-cliquer pour découvrir la majeure partie des paramétrages disponibles.
Pour le reste, scriptez, modifiez, supprimez,… Et prenez un peu de bon temps !

[...] très relatif, notamment en comparaison de protocoles plus utilisés et plus aboutis comme RSync, toujours est-il qu’il est capable de créer et de maintenir 2 réplications de données, [...]