Abysse Tech

HiTech 4 All

syncronisation-dossier-widnows

Comment Synchroniser Deux Dossiers Automatiquement Sous Windows

by

Bien, aujourd’hui nous allons voir quelque chose de très cool qui va vous permettre de gérer la synchronisation de vos dossiers quotidiennement et automatiquement sous Windows et Linux par la même occasion.

La méthode qui va être décrite supporte la synchronisation en local, sur des lecteurs réseaux ou même via une connection SSH.

L’avantage d’une telle méthode c’est qu’elle répond à des exigences de stabilité, d’un usage de ressources modérés et elle est facilement customisable avec plusieurs paramètres.

Enfin, s’agissant d’une synchronisation à intervalle choisi, cela permet uniquement de s’atteler aux fichiers qui ont changés dans l’intervalle de temps.

Alors, c’est une technique dite de barbus et un peu tirée par les cheveux et pour les utilisateurs Windows, il y a des alternatives tels que AlwaysSync par exemple. Mais pour ceux qui veulent découvrir une méthode barbuesque et apprendre pas mal de choses, ou encore ceux qui ont beaucoup de fichiers et dont les logiciels de syncronisation plantent souvent (comme ici), elle est faite pour vous.

Bref, le contexte ici est de pouvoir assurer une redondance de mes données capitales sur un stockage sur le réseau local (deux disques durs branchés sur mon NAS en USB)

Les données se situent sur le NAS avec 2 disques normaux sans artifices RAIDeux, sur un disque USB et Mes documents de mes 2 PC. Pour ce tutoriel, on va voir comment faire pour effectuer la méthode de synchronisation d’un disque du NAS vers un disque NAS USB. Vous verrez que cela ne diffère absolument pas des autres configurations de backups souhaités et c’est bien sur cumulatif.

Trêve de blablateries habituelles, et passons aux choses sérieuses.

Premièrement, l’étape la plus longue consiste a installé Cygwin qui est un émulateur de commande linux pour Windows. Qui est pratique pour tout un tas de choses du reste…

Le download fait environ 4GB et dure longtemps du coup ;).

Bon le tutoriel est fait autour de Cygwin, mais vous pouvez tout aussi bien faire une machine virtuelle VMware sous Linux bien entendu, ou encore télécharger des versions allégées incluant juste Rsync.

1) Donc, nous on est de vrais barbus donc on va télécharger cygwin ici : http://www.cygwin.com/ et procédez çà l’installation. Vérifiez bien que vous avez coché Rsync dans le choix des packages.

2) Parfait, vous avez donc cygwin qui marche avec le package rsync. Maintenant, on va chercher l’arborescence du dossier à synchroniser. Les disques durs visibles dans le Poste de Travail sous windows se situent dans /cygdrive/ donc on fait par exemple :

$cd /cygdrive
$ ls

Ce qui nous donne quelque chose comme ceci :

MonPc@MonPc-PC /cygdrive
$ ls
c  d  e  f  g  i  s  t  u  v  w  y  z

Ici, le dossier qu’on va sauvegarde est y:/mondossier1/mondossier2 et on veut le mettre vers le disque dur s:/backup/mondossier2

3) On lance la première synchronisation de répertoires! Bonzaaai! Voici la commande qu’on tape dans Cygwin :

rsync -av --delete /cygdrive/y/mondossier1/mondossier2  /cygdrive/s/backup/mondossier2

Alors la, vous vous dites, « –delete » oulaaa!! Pas de panique, cet argument permet d’effacer les fichiers déplacés ou supprimés de votre dossier de sauvegarde (pas le dossier source) et donc de garde une syncro parfaite et pas avoir des traces de fichiers inutiles sur votre backup.

Vous pouvez ajouter z comme ceci rsync -avz, ce qui compressera les fichiers avant de les transférer ce qui pompe pas mal de CPU et qui pour un transfert en local est inutile. Pour du transfert SSH, c’est capital.

Le v cela permet d’enclencher le mode verbose, ce qui donc est important pour la première syncro, vous allez pouvoir voir ce qui se passe.

Le a (–archives) signifie que le transfert va conserver les permissions, les dates de modifications (important), et les liens symbolics (utiles surtout lorsqu’on sauvegarde un serveur.)

A la fin de la syncronisation vous devez obtenir quelque chose comme ceci :

sent 7123250588 bytes  received 245128 bytes  680274.62 bytes/sec
total size is 7121394766  speedup is 1.00

La vitesse n’était pas folle ici effectivement. Cela vient notamment du fait que le NAS ne soit pas très performant (de marque LG)

4) Bien après que votre première synchronisation est effectuée, notre objectif maintenant est d’automatiser le tout. Car oui c’est bien beau de pouvoir faire un rsync, mais si ce n’est pas automatisable alors ce n’est pas terrible. Un simple cp dossier dossier2 aurait fait l’affaire dans l’invite de commande windows.

Certains connaisseurs vont vouloir tenter le cronjob sous Cygwin qui serait certes intéressant. Mais cela ne fonctionne pas très bien sous Windows 7. Windows n’aime pas trop qu’on vienne le patouiller comme ça et sincèrement tant mieux.

Par contre sous Windows, il y a un planificateur de tâches qui fonctionne parfaitement et c’est ce que l’on va utiliser. Il m’a fallu plus d’une heure pour trouver le bon réglage pour la commande hybride Windows-Cygwin a exécuter dans le planificateur de tâche de Windows alors savourez la. 😉

Dans le terminal cygwin, on va créer le fichier bash.sh avec notre commande rsync :

touch /bin/rsynctask.sh
cd /bin/rsynctask.sh
chmod 755 rsynctask.sh

On édite le fichier rsynctask.sh et on y insère notre commande rsync :

vi rsynctask.sh<code>

Et on colle ceci :

<code>#!/bin/bash
rsync -av --delete /cygdrive/y/mondossier1/mondossier2  /cygdrive/s/backup/mondossier2

On teste le bon fonctionne de notre fichier en tapant ceci :

./rsynctask.sh

Qui doit nous donner ceci

sending incremental file list

Bien notre bash script fonctionne impeccablement, on va maintenant le rentrer dans le planificateur des tâches de windows :

5) Dans le champs de recherche du menu démarrer, on tape planificateur des taches et on ouvre le programme.

6) On clique sur « créer une tâche »

Dans le pop up qui apparait (onglet Général) on saisit le nom et la description de la tâche et surtout on coche « N’executer que si l’utilisateur est connecté » car si vous choisissez l’autre option vous pouvez sacrifier une heure de votre vie!

7)On se rend dans l’onglet déclencheur et on modifie les réglages de répétition de notre tâche. Et la c’est difficile! A quel heure on est sur d’être couché et à quel on veut que ce soit fini (4h – 7h du matin ici)

8) Dans l’onglet action, on sélectionne nouveau (action : démarrer un programme) et on colle la ligne suivante :

C:\cygwin64\bin\bash.exe -l -e '/cygdrive/c/cygwin64/bin/rsynctask.sh'

Attention, la version Windows utilisée ici est 64 bits d’où le dossier cygwin64.

On clique, oui sur la mise en place d’argument et on valide le tout!

9) On peut vérifier la bonne exécution de notre tache en faisant clic droit exécuter dans la liste des tâches.

Si vous avez un problème, assurez vous que la commande entière que vous avez saisi dans le planificateur des tâches fonctionne dans une invite de commande régulière (Windows)

Félicitations! Votre système de synchronisation de dossier est bien en place. Vous pouvez bien entendu rajouter plus de tâches rsync pour autant de dossier que vous voulez.

Vous pouvez compter sur l’efficacité du protocole pour assouvir vos besoins en gestion de stockage.

Étiquettes : , , , ,

Leave A Comment