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/



Les commentaires sont fermés.