[Accueil] alex / doc / sauvegarde


Installation d'un serveur de sauvegarde
avec rsync et Debian GNU/Linux

$Revision: 1.12 $
$Date: 2004/02/24 20:25:14 $

Introduction

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.

[Liste de sauvegardes]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.

Licence

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]

Installation du serveur de sauvegarde

  1. 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 ».

  2. 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 ».

  3. 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-1
    fr_FR@euro ISO-8859-15

    Voir les explications du manuel « Utiliser et configurer Debian pour le français ».

  4. 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 ».

  5. 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

  6. Nous allons utiliser un script de sauvegarde écrit en Python. Installez python2.1 ou une version ultérieure.

  7. 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

  8. 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.

  9. 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

  10. Autorisez l'utilisateur backup à écrire dans le dossier de sauvegarde :

    chown backup.backup /mnt/backup

    Dans le script 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"

  11. 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

  12. 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 :

  1. Définissez les utilisateurs qui auront accès aux sauvegardes. Nous allons définir un utilisateur, titi. Il doit pouvoir lire le contenu du dossier /mnt/backup.

    adduser titi

  2. Installez les paquets Samba :

    apt-get install samba

  3. 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

  4. 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

Paramétrage du serveur de fichiers

Serveur de fichiers Linux

Si le serveur de fichiers utilise Linux (Debian Woody dans notre cas), effectuez les opérations suivantes :

  1. Installez un serveur rsync :

    apt-get install rsync

  2. 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

  3. Dans le fichier /etc/rsync/rsyncd.conf, ajoutez les paramètres suivants :

    Paramètres globaux :

    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

    Définition d'un module à sauvegarder :

    [Truc]
    path = /mnt/truc
    comment = Dossier Truc
    uid = toto
    gid = toto


    toto correspond au nom d'un utilisateur ayant accès en lecture aux fichiers à sauvegarder.

Attention :

Serveur de fichiers Windows 2000

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 :

  1. 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.

  2. 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.

  3. En ligne de commande (fenêtre Dos), entrez :

    cd c:\rsync
    instsrv Rsync "c:\rsync\srvany.exe"

  4. Avec l'Éditeur du registre, ouvrez la base de registre et cherchez la clé HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / Rsync.

  5. Cliquez avec le bouton droit sur Rsync, choisissez Nouveau > Clé ; appelez la clé Parameters.

  6. Cliquez avec le bouton droit sur Parameters, choisissez Nouveau > Valeur chaîne ; utilisez le nom AppDirectory et la valeur "c:\rsync" (guillemets compris).

  7. 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).

  8. 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

  9. 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

  10. Démarrez le service Rsync dans Menu Démarrer > Paramètres > Panneau de configuration > Outils d'administration > Services.

  11. Testez le service en entrant (en ligne de commande) :

    telnet localhost 873
    ...
    c:\rsync\rsync.exe localhost::

Conclusion

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.

Documentation


$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