$Revision: 1.12 $
$Date: 2004/02/24 20:25:14 $
Ce document explique comment installer un système permettant de sauvegarder automatiquement un serveur de fichiers Linux ou Windows. Il se fonde sur deux expériences : l'utilisation d'un Pentium 120 pour sauvegarder un serveur de fichiers Debian Woody et l'utilisation d'un Pentium 166 pour sauvegarder un serveur de fichiers Windows 2000.
Dans
les deux cas, un serveur rsync est installé sur le serveur de fichiers.
À intervalles réguliers, un script lancé sur le serveur
de sauvegarde réplique en local l'arborescence du serveur de fichiers.
L'utilisation de liens durs (hard links) permet de ne copier que les
fichiers modifiés depuis la dernière sauvegarde, et ainsi de conserver
un grand nombre de versions.
Les arborescences sauvegardées sont accessibles en lecture seule depuis des postes de travail Windows grâce à un serveur Samba.
Copyright 2002-2004 Alexandre Ratti. Document diffusé dans les conditions des licences GPL 2 (GNU General Public License) et GFDL 1.2 (GNU Free Documentation License). [Explications]
Installez un système Linux minimal sur le serveur de sauvegarde. Dans cet exemple, nous utilisons Debian GNU/Linux 3.0 (alias Woody). Voir aussi l'astuce « Installation d'un système minimal ».
Sécurisez le système en retirant les services inutiles, en
installant xinetd à la place d'inetd, etc.
Voir les explications du « Securing
Debian Manual ».
Paramétrez le système pour permettre la saisie et l'affichage
de caractères français.
apt-get install locales
ou (si le paquet est déjà installé)
dpkg-reconfigure locales
Sélectionnez les paramètres fr_FR ISO-8859-1
et fr_FR@euro ISO-8859-15, puis la langue fr_FR.
Vérifiez que les lignes suivantes ont bien été ajoutées
à la fin du fichier /etc/locale.gen :
fr_FR ISO-8859-1Voir les explications du manuel « Utiliser
et configurer Debian pour le français ».
fr_FR@euro ISO-8859-15
Le cas échéant, montez un gros disque dur supplémentaire dans le serveur. Nous avons utilisés des disques durs EIDE de 120 Go et de 80 Go. Attention : le BIOS des vieux Pentium peut ne pas reconnaître correctement les disques de grande taille et l'ordinateur risque alors de rester bloqué au démarrage. Voir le document « Installation d'un gros disque dur sur un ordinateur ancien ».
Lorsque le disque est reconnu par le système, partitionnez-le, formatez-le
et montez les partitions.
Partionnement : cfdisk /dev/hdX, où X
est la lettre du disque.
Formatage (création d'un partition ReiserFS) :
apt-get install reiserfsprogs
mkreiserfs /dev/hdXN, où X est la lettre
du disque et N le numéro de la partition créée.
Montage de la partition :
mkdir /mnt/backup
mount /dev/hdXN /mnt/backup
Pour que la partition soit montée et démontée automatiquement,
ajoutez dans /etc/fstab :
/dev/hdXN /mnt/backup reiserfs defaults
0 2
Nous allons utiliser un script de sauvegarde écrit en Python. Installez
python2.1 ou une version ultérieure.
Récupérez roller.py,
script de sauvegarde sous licence GPL écrit par Leland Elie,
et placez-le dans /usr/local/bin/ sans oublier de le rendre
exécutable (chmod +x). Pour comprendre comment fonctionne
ce script, voir la doc de Mike Rubel, « Easy
Automated Snapshot-Style Backups with Linux and Rsync ».
Principe de ce script : lors de la première sauvegarde, le script
réplique intégralement l'arborescence du serveur de fichiers
avec rsync. Lors des sauvegardes suivantes, le script duplique d'abord la
sauvegarde précédente sous la forme d'une arborescence de
liens durs, puis resynchronise cette arborescence avec celle du serveur
de fichiers. Seuls les fichiers modifiés sont recopiés. On
obtient ainsi une arborescence composée principalement de liens durs
et des fichiers modifiés. Ainsi, chaque arborescence de sauvegarde
contient l'intégralité des fichiers, mais les fichiers non
modifiés ne sont stockés qu'une seule fois sur le disque dur.
Vérifiez que la première ligne du script (#!/usr/bin/python)
appelle la bonne version de Python.
Installez le client rsync s'il n'est pas présent sur
le serveur de sauvegarde, car il est utilisé par le script roller.py :
apt-get install rsync
Créez le fichier /etc/roller.conf et placez-y les paramètres
suivants :
[fichiers]
# Activer ou déactiver la sauvegarde de ce serveur
enable = yes
# Chemin du répertoire de sauvegarde
path = /mnt/backup
# Serveur de fichiers auquel le script se connecte
# avec rsync pour sauvegarder les fichiers
address = fichiers.toto.net
# Modules du serveur rsync à sauvegarder
modules = Truc
# Nombre maximum de jours de sauvegarde à conserver
days = 100
# Délai minimum en heures entre deux sauvegardes
hours = 2
Ces paramètres sont décrits au début du script.
Le script va être exécuté sous l'identité de
l'utilisateur backup, prédéfini sur les systèmes
Debian. Créez le dossier /var/run/roller pour permettre
à l'utilisateur d'y stocker des fichiers temporaires.
mkdir /var/run/roller
chown backup.backup /var/run/roller
Autorisez l'utilisateur backup à écrire dans
le dossier de sauvegarde :Dans le script
chown backup.backup /mnt/backup
roller.py, cherchez la ligne my_lock
= et donnez-lui la valeur "/var/run/roller"
pour que le fichier de verrouillage soit créé dans le bon
répertoire :
my_lock = "/var/run/roller"
Programmez l'exécution du script de sauvegarde par cron
en ajoutant les lignes suivantes dans /etc/crontab (lancement
du script à minuit tous les jours et vers 13 heures en semaine) :
15 0 * * * backup /usr/local/bin/roller.py
10 13 * * 1-5 backup /usr/local/bin/roller.py
Le cas échéant, redirigez le courrier électronique
vers un autre ordinateur pour pouvoir consulter plus facilement les rapports
générés par le script de sauvegarde. Exim peut être
reparamétré avec eximconfig.
Pour que les sauvegardes soient accessibles par des postes de travail Windows, installez et configurez Samba :
titi. Il doit pouvoir
lire le contenu du dossier /mnt/backup. adduser titiInstallez les paquets Samba :
apt-get install samba
Dans le fichier /etc/samba/smb.conf :
Modifiez ou ajoutez les paramètres suivants dans la section [global],
en les adaptant :
workgroup = TOTO
netbios name = backup
...
preserve case = yes
short preserve case = yes
...
character set = ISO8859-1
client code page = 850
Créez une section décrivant le dossier/la partition à
partager :
[sauvegarde]
comment = Sauvegarde du serveur de fichiers
browseable = yes
writable = no
path = /mnt/backup
map hidden = no
valid users = titi
Déclarez l'utilisateur titi à Samba (en lui
donnant le même mot de passe que dans /etc/passwd) et
redémarrez le serveur Samba :
smbpasswd titi
/etc/init.d/samba restart
Si le serveur de fichiers utilise Linux (Debian Woody dans notre cas), effectuez les opérations suivantes :
Installez un serveur rsync :
apt-get install rsync
Dans le fichier /etc/xinetd.conf, ajoutez les lignes (en
adaptant le paramètre only_from à votre situation) :
service rsync
{
id = rsync_network
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon --config=/etc/rsync/rsyncd.conf
log_on_failure += USERID
only_from = backup.toto.net
}
Redémarrez xinetd :
/etc/init.d/xinetd restart
/etc/rsync/rsyncd.conf, ajoutez les paramètres
suivants :pid file = /var/run/rsyncd/pid
lock file = /var/run/rsyncd.lock
use chroot = yes
read only = yes
list = yes
hosts allow = backup.toto.net
ignore nonreadable = yes
[Truc]
path = /mnt/truc
comment = Dossier Truc
uid = toto
gid = totototo correspond au nom d'un utilisateur ayant accès en
lecture aux fichiers à sauvegarder.Attention :
Avec le paramétrage ci-dessus, le serveur rsync est accessible en lecture seule, mais sans mot de passe.
Les paramètres only_from de xinetd.conf
et hosts allow de rsyncd.conf permettent de restreindre
l'accès au serveur. Cependant, l'authentification risque d'échouer
si la conversion du nom en adresse IP (reverse mapping) est
mal paramétrée dans le serveur DNS du réseau.
Si le serveur de fichiers utilise Windows NT, Windows 2000 ou Windows XP, effectuez les opérations suivantes (procédure testée avec Windows 2000 seulement) pour installer un serveur rsync :
Récupérez rsync.exe et divers fichiers utiles
sur la page The Rsync Project
(voir le fichier Rsync.zip). Lire également les explications
de cette page ; la procédure ci-dessous s'en inspire largement.
Décompressez et placez les fichiers dans c:\rsync.
Si vous choisissez un autre dossier, modifiez en conséquence le chemin
indiqué dans les paramètres de registre ci-dessous.
En ligne de commande (fenêtre Dos), entrez :
cd c:\rsync
instsrv Rsync "c:\rsync\srvany.exe"
Avec l'Éditeur du registre, ouvrez la base de registre et cherchez
la clé HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet /
Services / Rsync.
Cliquez avec le bouton droit sur Rsync, choisissez
Nouveau > Clé ; appelez la clé
Parameters.
Cliquez avec le bouton droit sur Parameters, choisissez
Nouveau > Valeur chaîne ; utilisez
le nom AppDirectory et la valeur "c:\rsync"
(guillemets compris).
Cliquez avec le bouton droit sur Parameters, choisissez
Nouveau > Valeur chaîne ; utilisez
le nom Application et la valeur "c:\rsync\rsync.exe"
(guillemets compris).
Cliquez avec le bouton droit sur Parameters, choisissez
Nouveau > Valeur chaîne ; utilisez
le nom AppParameters et la valeur --config="c:\rsync\rsyncd.conf"
--daemon
Paramétrez le fichier c:\rsync\rsyncd.conf :
use chroot = false
strict modes = false
hosts allow = backup.toto.net
read only = yes
list = yes
[Truc]
# Mettre des barres obliques (au lieu de barres obliques inverses)
# et terminer le chemin par une barre oblique
path = c:/chemin/des/fichiers/
comment = Dossier Truc
Démarrez le service Rsync dans Menu
Démarrer > Paramètres > Panneau de configuration >
Outils d'administration > Services.
telnet localhost 873
...
c:\rsync\rsync.exe localhost::Testez la configuration en lançant une sauvegarde à partir du serveur de sauvegarde :
su -c "roller.py" backup
Attention, la première sauvegarde réplique toute l'arborescence du serveur de fichiers ; elle peut donc être assez longue.
$Id: index.html,v 1.12 2004/02/24 20:25:14 alex Exp $
http://www.gabuzomeu.net/alex/doc/sauvegarde/index.html
courrier électronique | e-mail Alexandre Ratti