Mise en place d'un serveur de sauvegardes incrémentales sous Linux pour stations Window$ (postes de travail et serveurs)
Avant-propos
Cette solution de sauvegardes ne se substitue pas à celles sur bandes. Elle les complémente en apportant une souplesse de restauration des fichiers sauvegardés. Elle s'appuie sur la faculté des liens durs Linux (hard links) et sur l'efficacité de l'utilitaire Rsync. Elle a, de plus, l'avantage d'être totalement ouverte (Open Source) et de reposer sur la licence GNU/GPL.
Liens durs sous Linux
Pour gérer ses fichiers, Linux utilise un système extrêment puissant (extfs). Dans ce dernier, le nom d'un fichier n'est qu'un lien vers un noeud du disque (inode) dans lequel est réellement stocké le fichier. Ce système offre la possibilité de lier plusieurs fois le même noeud. Ces liaisons sont les liens durs. Cette possibilité permet de "simuler" la présence de plusieurs fois le même fichier, tout en occupant réellement qu'une seule fois l'espace disque. Cet espace étant véritablement libéré lorsque plus aucun lien n'y fait référence.

Dans cet exemple, un fichier A apparait deux fois dans l'arborescence mais n'occupe l'espace disque qu'une seule fois. Le fichier B a été modifié entre les deux sauvegardes. Si le dossier J-2 est supprimé, seul le noeud Y le sera réellement.
Rsync
Rsync est un utilitaire spécialisé dans la synchronisation de fichiers à distance. Son efficacité réside dans le fait que seuls les fichiers modifiés sont copiés, soit une économie de bande passante et de temps de sauvegarde. Placé sous la licence GNU/GPL, Rsync a été porté sous CygWin, un environnement "Linux-like" pour Window$.
Mise en oeuvre des stations Window$
Avant de commencer, il convient de préciser que seuls les systèmes supérieurs à Window$ 98 sont concernés. En effet, la solution fait appel à la notion de service. Cependant, sa mise en oeuvre reste possible sous Window$ 98.
Installation
Téléchargez le programme d'installation
ici. Celui-ci renferme les fichiers rsync.exe 2.6.2-3, cygopt-0.dll 1.6.4-4 et cygwin1.dll 1.5.18-1, tous trois issus du projet CygWin. Il renferme également les fichiers instsrv.exe et srvany.exe, deux utilitaires issus du Resource Kit Window$. Le programme d'installation a été "compilé" avec l'application Inno Setup. Les "sources" de l'application sont disponibles
ici.
Configuration
Une fois l'installation terminée, le bloc-notes Window$ est lancé avec le fichier de configuration C:\cwRsync\rsync.cfg. Modifiez-le à votre convenance. Rsync utilise la notion de modules. Si l'arborescence que vous devez sauvegarder est très profonde, essayez de la diviser en différents modules. Préférez le '/' Unix au '\' Window$ comme séparateur.
Ip du serveur Linux: 10.1.1.2
Ip de la station Window$: 10.1.1.3
Window$:
(C:\cwRsync\rsync.cfg)
# les dossiers C:\Musiques D:\Images doivent être sauvegardés.
use chroot = false
strict modes = false
hosts allow = 10.1.1.2
[musiques]
path = C:/Musiques/
read only = yes
list = no
[images]
path = D:/Images/
read only = yes
list = no
Linux:
root@nw8000:~ # rsync -av 10.1.1.3::musiques /mnt/backup/10.1.1.3/
root@nw8000:~ # rsync -av 10.1.1.3::images /mnt/backup/10.1.1.3/
Notez que Rsync est sensible à l'absence ou à la présence d'un '/' à la fin de chemin source.
Démarrage du service
Une fois la configuration terminée, démarrez le service rsync (Poste de travail/Gérer/Services/rsync/démarrer). Vérifiez que rsync est opérationnel sur la station en ouvrant une console Telnet sur le port local 873 à l'aide de la commande "telnet localhost 873".
Répétez l'opération sur les différentes stations que vous souhaitez sauvegarder. Toute modification apportée après le démarrage du service au fichier de configuration C:\cwRsync\rsync.fg nécessitera un redémarrage du service pour être prise en compte.
Mise en oeuvre du serveur de sauvegardes Linux
ATTENTION: LORS DE LA PREMIERE SAUVEGARDE, LA TOTALITE DES FICHIERS A SAUVEGARDER EST COPIEE!
La distribution Linux utilisée pour le serveur de sauvegardes est une Hoary (Ubuntu 5.04 / Debian based) installée à minima.
Pour effectuer son travail, le serveur de sauvegardes va tirer profit de l'utilitaire Rsync. Ce dernier entre en contact avec son homologue qui est à l'écoute sur la station cible (le service précédement installé). La liste des fichiers modifiés est établie (la totalité des fichiers lors de la première sauvegarde) et ces fichiers sont copiés sur le serveur de sauvegarde à l'emplacement indiqué (l'option -z peut être passée afin d'activer la compression des données durant le transfert).
Script de sauvegarde
La translation des sauvegardes repose sur le principe suivant:
- la plus vieille sauvegarde est supprimée,
- les suivantes sont renommées en cascade (j-2 devient j-3, etc...),
- la dernière sauvegarde (j-2) est dupliquée dans j-1 sous forme de liens durs (cp -al),
- Rsync est démarré pour chaque cible enregistrée dans un fichier de configuration.
# Liste des stations Window$ et de leurs modules dans /etc/winsave.lst
# station::module
10.1.1.3::musiques
10.1.1.3::images
machine::dossier
#!/bin/bash
# Script de sauvegarde dans /bin/winsave
chemin=/mnt/backup
source=`basename $0`
journal=/var/log/$source.log
liste=/etc/$source.lst
[ -d "$chemin/j-3" ] && rm -rf "$chemin/j-3"
[ -d "$chemin/j-2" ] && mv "$chemin/j-2" "$chemin/j-3"
[ -d "$chemin/j-1" ] && mv "$chemin/j-1" "$chemin/j-2"
[ -d "$chemin/j-2" ] && cp -al "$chemin/j-2" "$chemin/j-1"
for cible in `egrep -v ^# $liste`
do
station=${cible%%::*}
module=${cible##*::}
rsync -av $cible "$chemin/j-1/$station/$module" >> $journal
done
Automatisation de la sauvegarde
Il ne reste plus qu'à programmer la sauvergarde tous les jours à 1 heure du matin. Pour cela, la commande "crontab -e" démarre Vi.
# Sauvegarde des stations Window$
00 01 * * * /bin/winsave
Souplesse de restauration
La souplesse réside essentiellement de le fait que les fichiers deumeurent accessibles très facilement, à l'inverse d'une sauvegarde sur bande qui doit être déroulée et où ils sont enfouis au coeur d'une archive. A l'aide de Samba, vous pouvez rendre le dossier de sauvegarde du serveur accessible en lecture seule aux stations Window$.
Service rsync ou dossier partagé?
La sauvegarde peut être faite à l'aide du montage du dossier à sauvegarder partagé depuis la station Window$ dans l'arborescence Linux.
Ressources
Rsync
http://samba.anu.edu.au/rsync/
http://samba.anu.edu.au/rsync/nt.html
CygWin
http://www.cygwin.com/
Inno Setup
http://www.jrsoftware.org/
Window$
http://support.microsoft.com/kb/q137890/
Autres
http://www.mikerubel.org/computers/rsync_snapshots/
Pascal.parent at free.fr - QED