Pour sauvegarder un PC Windows avec rSnapshot, il existe 3 (au moins) grandes méthodes :
- Monter un démon rsync sous Windows et faire une sauvegarde comme si il s’agissait d’un PC Linux
- Monter un partage Windows via Samba, et sauvegarder le partage comme un répertoire local
- Ajouter le support NFS sous Windows
J’ai personnellement testé les deux premières, mais je n’ai réussi à mettre en œuvre de façon acceptable que la deuxième solution.
Comme pour l’article Samba, je rédige le présent post à partir de notes prises au moment de la mise en œuvre de la solution, je ne peux plus vérifier les configurations décrites ici n’ayant plus de PC sous Windows.
Démon rsync sous Windows
Pour avoir un serveur rsync sous Windows il faut passser par cygwin qui est un package qui met à disposition des utilisateurs Windows les principaux outils Linux existant dont rsync.
Je ne voulais pas installer cygwin j’ai donc trouvé 2 packages rsync indépendant (se basant tout de même sur cygwin, mais avec le strict minimum)
Le premier étant plus automatisé que le second.
J’ai testé les 2 et je me suis heurté au même problème de non préservation des accents dans les noms de fichiers.
Il est logique que ces 2 packages aient le même comportement concernant les accents, puisque ce dernier est inhérent à cygwin qui ne gère pas l’UTF8
J’ai bien tenter d’appliquer une dll patchée de cygwin sensé ajouter le support de l’UTF8 à ce dernier mais sans succès.
Ce problème d’accent étant bloquant je n’ai pas persévéré avec cette solution.
Pour en savoir plus sur la mise en œuvre consulter cet article :
http://www.stillnetstudios.com/snapshot-backups-howto/
Partage Samba
Dans cette solution le pré-requis est d’avoir Samba d’installé et configuré sur le serveur de sauvegarde.
Ensuite on monte le partage Windows voulu dans le point de montage de son choix avec la commande mount :
mount -t cifs //adresse_ip_machine_windows/partage /mnt -o username=utilisateur_windows,password=mot_de_passe,iocharset=utf8,noperm
Dans mon cas le partage Windows était le partage administratif du disque dur contenant les données à sauvegarder (D$) et mon utilisateur était membre du groupe Administrateur.
L’option iocharset permet de spécifier l’encodage des noms de fichier (UTF8) pour prendre en compte les accents et noperm indique qu’il ne faut pas vérifier les droits sur les fichiers
Après la saisie de la commande, normalement votre partage (D: dasn mon cas) devrait être accessible dans votre point de montage /mnt.
Fichier rsnapshot
Le fichier de configuration rSnapshot utilisé est peut différent de celui décrit pour la sauvegarde des machine Linux.
################################################# # rsnapshot.conf - rsnapshot configuration file # ################################################# # # # PLEASE BE AWARE OF THE FOLLOWING RULES: # # # # This file requires tabs between elements # # # # Directories require a trailing slash: # # right: /home/ # # wrong: /home # # # ################################################# ####################### # CONFIG FILE VERSION # ####################### config_version 1.2 ########################### # SNAPSHOT ROOT DIRECTORY # ########################### snapshot_root /data/sauvegardes/sweetHome/ no_create_root 1 ################################# # EXTERNAL PROGRAM DEPENDENCIES # ################################# cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger cmd_du /usr/bin/du cmd_rsnapshot_diff /usr/bin/rsnapshot-diff #cmd_preexec /path/to/preexec/script #cmd_postexec /path/to/postexec/script ######################################### # BACKUP INTERVALS # # Must be unique and in ascending order # # i.e. hourly, daily, weekly, etc. # ######################################### interval daily 7 interval weekly 4 interval monthly 2 ############################################ # GLOBAL OPTIONS # # All are optional, with sensible defaults # ############################################ # Verbose level : 1 (mini) through 5 (maxi). verbose 2 loglevel 3 logfile /var/log/svc/rsnapshot.log lockfile /var/lock/rsnapshot.pid rsync_long_args --delete --numeric-ids --delete-excluded --chmod=ugo=rwX ssh_args -o BatchMode=yes #include_file /path/to/include/file #exclude_file /path/to/exclude/file ############################### ### BACKUP POINTS / SCRIPTS ### ############################### # sweetHome backup /mnt/
Les 2 seuls différences concernent le point de sauvegarde (on spécifie ici que l’on sauvegarde un dossier local) et l’argument chmod de l’option rsync_long_args, où l’on indique qu’il faut changer les droits utilisateur de tous les fichiers sauvegardés pour y appliquer les droits en lecture, écriture et exécution pour tout le monde.
Scripts de sauvegarde
Pour finir mes scripts enchainant les diverses opération nécessaires à la sauvegarde du PC Windows :
- Allumage via WOL
- Montage du partage
- Sauvegarde
- Démontage
- Extinction
/home/mon_user/bin/sauvegarde.sh
#!/bin/bash DAY_OF_WEEKLY_BACKUP=lundi DAY_OF_MONTHLY_BACKUP=01 cd $(dirname "${0}") echo Attente reveil sweetHome ./wakeOnLanSweetHome.sh sleep 60 sudo ./mountSweetHome.sh echo Sauvegarde journaliere en cours... rsnapshot -c rsnapshotSweetHome.conf daily if [ $(date +%A) == $DAY_OF_WEEKLY_BACKUP ]; then echo Sauvegarde hebdomadaire en cours... rsnapshot -c rsnapshotSweetHome.conf weekly fi if [ $(date +%d) == $DAY_OF_MONTHLY_BACKUP ]; then echo Sauvegarde mensuelle en cours... rsnapshot -c rsnapshotSweetHome.conf monthly fi sudo ./umountSweetHome.sh echo Arret de sweetHome net rpc shutdown -f -I machine_distante -U utilisateur_distant%mot_de_passe -t 10 -C "Arrêt en cours..."
wakeOnLanSweetHome.sh est le même que celui mentionné dans Sauvegarde avec rSnapshot, configuration complète
#!/bin/bash echo Reveil de sweetHome wakeonlan mon_adresse_mac
mountSweetHome.sh contient juste la commande de mount indiquée ci-dessus.
#! /bin/bash echo montage du lecteur D de sweetHome mount -t cifs //adresse_ip_machine_windows/partage /mnt -o username=utilisateur_windows,password=mot_de_passe,iocharset=utf8,noperm
umountSweetHome.sh lui contient juste :
#! /bin/bash echo demontage du lecteur D de sweetHome umount /mnt/sweetHome
L’intérêt de mettre ces commandes simple dans des scripts bash est de pouvoir modifier le sudoer pour autoriser l’exécution de ces scripts sans mot de passe, évitant de mettre ce droit sur les commandes mount et umount directement.
Ainsi on pourra monter/demonter le partage Windows de sweetHome avec sudo sans mot de passe mais l’exécution de mount/umount pour monter/demonter autre chose necessitera toujours le mot de passe.
On aura donc dans sudoer :
mon_user ALL = NOPASSWD: mountSweetHome.sh, umountSweetHome.sh
Et non pas :
mon_user ALL = NOPASSWD: mount, umount
Sources :
http://www.stillnetstudios.com/snapshot-backups-howto/
Démon rsync sur Windows
http://blog.gingerlime.com/rsnapshot-server-on-windows
http://www.stillnetstudios.com/snapshot-backups-howto/
Démon rsync sur Windows – problèmes accent
http://itefix.no/i2/node/11626?page=1#comment-14452
http://forum.ubuntu-fr.org/viewtopic.php?id=141415
http://www.okisoft.co.jp/esc/utf8-cygwin/