Catégorie : News     Tags :      

    Retrouvez cet article dans : Linux Magazine Hors série 21

    A ce jour, il existe plusieurs solutions de synchronisation de données sous Linux. Les plus connues demeurent certainement Rsync ainsi qu’Unison. Leur fonctionnement est possible sur une plateforme Windows lorsque utilisées avec Cygwin, un environnement « Linux-like » pour Windows. Ces méthodes de sauvegardes sont fréquemment utilisées sous Windows, mais restent cependant, à mon goût, lourdes à mettre en place.

    Je me suis donc penché sur un outil de mirroring appelé « Mirrodir » très simple d’utilisation. Combiné à une mise en route des machines par wake on lan et une extinction de ces dernières via un accès ssh. Vous serez en mesure de mettre en place très rapidement une solution de sauvegarde efficace de vos postes Windows2000 ou Windows XP. Cet article sera aussi l’occasion de présenter OpenSSH pour Windows, une alternative à l’installation complète de Cygwin, que je trouve personnellement plus simple à installer et à configurer, bien que moins complète.
    Mirrordir permet de copier intégralement ou partiellement deux chemins, qu’ils soient locaux ou distants via le protocole FTP, mais pour l’instant ne supporte malheureusement pas SCP. L’utilisation de Mirrordir est très aisée et il sera difficile de faire une fausse manipulation, comme j’ai eu l’occasion de le faire avec Unison, en synchronisant dans le mauvais sens. Mais je ne dois pas être le premier à qui cela arrive :) Plus concrètement, la syntaxe pour synchroniser deux répertoires locaux est du type :

    mirrordir /chemin/contenant/les/donnees/ /chemin/de/destination/ .

    Plusieurs options peuvent être passées à la commande pour par exemple créer une archive compressée, refuser de supprimer les fichiers qui ne sont plus présents sur le répertoire « maître »… Mirrordir, vous le verrez, est assez complet. Il serait dès à présent possible de faire un script de sauvegarde en montant un partage réseau Windows, en faisant le mirroring et en démontant ce partage réseau. Je vous déconseille d’opter pour une telle solution pour deux simples raisons.  La première, si vous avez à sauvegarder un poste WinXP Home Edition, il ne vous sera pas possible de créer un partage accessible par mot de passe, option uniquement disponible dans sa version Pro. Un partage sur des données importantes sans mot de passe, accessible par tout le réseau est donc à oublier.
    La seconde raison est que le montage/démontage de partage réseau (ou de partition) pour de la sauvegarde peut poser problème dans le cas où celui-ci serait déjà monté, en cours d’utilisation ou simplement busy car mal démonté lors du dernier accès. Nous cherchons donc à rendre des données d’un poste Windows accessibles depuis le réseau, avec un accès contrôlé par login/password. Soyons honnêtes, sous Windows, il n’existe que très peu de possibilités et une solution que j’ai retenue est l’accès FTP, Mirrordir le gérant parfaitement.
    Pour ce faire, j’ai opté pour Filezilla Server, un serveur FTP sous licence GPL très facile à installer ainsi qu’à configurer. Il permet facilement la mise en place d’alias. Ainsi, il vous est possible de créer un compte, de définir un répertoire racine vide et d’y ajouter autant d’alias que vous souhaitez. Cela a son intérêt si vous souhaitez sauvegarder des données se trouvant sur différentes partitions.
    L’intérêt d’une sauvegarde avec Mirrordir via le protocole FTP est la possibilité à l’utilisateur de définir lui-même ses données importantes qui doivent être sauvegardées, ceci sans avoir à intervenir sur le serveur. A tout moment l’utilisateur Windows sera en mesure d’ajouter un répertoire en quelques clics. Votre seule préoccupation sera de vérifier l’espace occupé sur le disque de backup. Vous l’aurez compris, une sauvegarde de ce type est d’une simplicité exemplaire ! Cependant, une copie de fichiers conséquents peut ralentir la machine de l’utilisateur. Aussi, j’ai souhaité effectuer cette sauvegarde lorsque le poste n’est pas utilisé. Le principe sera donc de démarrer la machine, de procéder à la sauvegarde, puis de l’éteindre. Pour l’allumage, j’avais déjà abordé le sujet dans un précédent article, le wake on lan demeure la meilleure solution, voire l’unique solution. A nouveau, cela est très aisé à mettre en place et vous n’aurez que peu de mal à démarrer vos postes à partir de votre serveur Linux avec l’outil Etherwake. Pour les plus curieux d’entre vous, un très bon article sur le fonctionnement du wake on lan (WOL) est disponible à cette adresse : http://gsd.di.uminho.pt/jpo/software/wakeonlan/mini-howto/ .
    Il ne nous reste maintenant plus qu’à contrôler l’extinction du poste Windows et ce grâce à l’outil OpenSSH for Windows. http://sshwindows.sourceforge.net/
    Une fois l’installation faite, démarrez une invite de commande DOS. Puis tapez ceci :

    C:\Program Files\OpenSSH\bin>mkgroup -l >> ..\etc\group
    C:\Program Files\OpenSSH\bin>mkpasswd -l >> ..\etc\passwd

    Une fois cela fait, il vous faudra modifier, sur votre poste Windows, le fichier sshd_config qui se trouve dans le répertoire /etc. Décommentez ces deux lignes et modifiez le chemin du fichier authorized_keys de la sorte :

    PubkeyAuthentication yes
    AuthorizedKeysFile     /etc/authorized_keys

    Nous allons maintenant générer notre clé publique sur le serveur Linux. Pour cela, en root, exécutez :

    ssh-keygen -t dsa

    Il ne reste plus qu’a copier le fichier /root/.ssh/id_dsa.pub sur votre machine Windows dans le répertoire /etc, puis de le renommer en authorized_keys. Dans votre invite DOS exécutez net start opensshd pour que le service se lance. A l’avenir, il sera lancé automatiquement au démarrage de Windows. Vous pouvez dès à présent accéder, depuis le serveur Linux, à votre PC Windows de la sorte :

    ssh login@ip_machine_windows

    Une fois que vous vous serez assuré que l’authentification sur votre machine Windows se fait sans demande de mot de passe, vous pourrez passer des commandes DOS depuis votre serveur. Si vous désirez éteindre votre PC Windows, ce qui nous intéresse ici, tapez :

    ssh login@ip_machine_windows shutdown –s –f –t 5

    Nous avons donc réuni toutes les conditions pour mettre une sauvegarde automatisée en place. Il ne reste plus que l’écriture d’un script ainsi que d’une entrée dans la crontab (Le script que j’utilise est fourni en annexe). Le script démarre la machine via le wake on lan.
    A la racine de mon compte FTP, j’ai placé un fichier ftpup.txt. Le script tente de le récupérer via wget. Si le fichier ftpup.txt a pu être récupéré, cela signifie que le serveur FTP fonctionne. Le mirroring sera lancé. Dans le cas contraire, 5 tentatives seront faites à intervalle de 60 secondes. Au-delà de ces 5 tentatives, nous considérons que la machine ne peut être sauvegardée. Le système peut par exemple avoir démarré en mode sans échec, être totalement planté ou encore un disque dur peut être défectueux… ou tout simplement le service FTP ne s’est pas lancé. Dans le doute, nous ordonnerons toutefois l’extinction du poste Windows. Au-delà, nous ne pourrons rien faire si ce n’est intervenir physiquement sur la machine pour prendre connaissance du problème. Vous l’aurez compris, ce procédé se veut le plus simple possible et sa mise en place se fait en quelques minutes. C’est bien souvent après une perte de données que l’on se penche sur les diverses manières de faire une sauvegarde, alors maintenant, prenez les devants !

    #!/bin/bash
    # Allumage du poste via wake on lan
    # Remplacer la MAC address par celle
    # de votre machine windows
    /usr/sbin/etherwake -i eth0 \
      00:0B:6A:41:0A:C2
    # Tempo de 1’30 pour le démarrage systeme
    sleep 90
    # 5 tentatives d’acces au serveur
    # FTP seront effectuées
    # à 60 secondes d’intervalle
    COMPTEUR=4
    MARCHE=0
    while [  $COMPTEUR -gt 0 ]; do
            if wget ftp://loginftp:passwordftp@ip_machine_windows:port/ftpup.txt \
                --output-document=/tmp/ftpup.txt --quiet --waitretry=5  --tries=1 ; then
                    echo „Ftp accessible. Lancement de la sauvegarde sur XXXXXXX”
                    let COMPTEUR=0
                    let MARCHE=1
            else
                    echo „FTP inaccessible. Encore $COMPTEUR tentative(s)”
                    let COMPTEUR=COMPTEUR-1
                    echo “Temporisation de 60s”
                    sleep 60
            fi
                    done
            if [ $MARCHE -gt 0 ]; then
                    mirrordir ftp://loginftp:passwordftp@ip_machine_windows:port/ \
                                   /chemin/du/repertoire/de/sauvegarde
                    echo „Sauvegarde accomplie“
                    echo „Occupation des disques après sauvegarde“
                    df -h
            else
                    echo „FTP inaccessible. 5 tentatives ont échouées“
                    echo „!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!“
                    echo „!!!!! ATTENTION LA SAUVEGARDE N’A PAS ETE FAITE !!!!!“
                    echo „!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!“
            fi
    ssh login@ip_machine_windows shutdown -s -f -t 30
    
    

    Retrouvez cet article dans : Linux Magazine Hors série 21

    Posté par (La rédaction) | Signature : Rodolphe Rudler | Article paru dans

    Laissez une réponse

    Vous devez avoir ouvert une session pour écrire un commentaire.