Sauvegardes

Cette page décrit la mise en place d'un serveur rsync.

Objectifs

  • Dupliquer les données importantes de plusieurs ordinateurs
  • les données sont locales à chaque ordinateur
  • les sources sont des Linux et des Windows
  • Chaque source dispose d'un répertoire de sauvegarde indépendant
  • Une source ne doit pas pouvoir écraser une autre source
  • Une source ne doit pas pouvoir lire une autre source
  • Seule la source et root peuvent lire les données
  • Le script de sauvegarde tourne en super utilisateur sur la source pour pouvoir lire tous les fichiers
  • L'utilisateur destination a des droits restreints

Solutions

Rsync semble l'utilitaire adapté, en effet il est simple, léger, fonctionne en ligne de commande et dispose d'un portage sous windows. De plus, rsync est très flexible. Nous avons notamment plusieurs choix pour le protocole de transfert :

  1. rsync
  2. ssh

Protocole rsync :

  • +facile à mettre en place
  • +définition de partages appelés modules
  • +authentification intégrée
  • -moins sécure que ssh (les mots de passe ne sont pas en clair)
  • -nécessite un démon appelé par inetd ou en standalone

Protocole SSH :

  • +déjà fonctionnel si SSH est déjà installé
  • +sécurité
  • -nécessite la création d'utilisateurs sur le système
  • -difficile de restreindre les utilisateurs de sauvegarde aux seuls répertoires de sauvegarde (chroot)
  • -plus dur à mettre en place si chroot

Dans mon cas, rsync est suffisant en terme de sécurité puisqu'il s'agit d'un réseau local. De plus je trouve cette solution plus propre. Pour plus d'informations sur la configuration de ssh, voir SSH.

Détails de la solution

  • Tout est sauvegardé dans /sauvegardes
  • chaque source dispose d'un répertoire de sauvegarde
  • Droits sur les répertoires
valeur droits
utilisateur root r w X
groupe root - - -
autre - - -

* Un démon tourne sur le serveur

  • De plus, /ftp est publié par rsync en vue d'une sauvegarde sur un ordinateur distant

Installation

rsync client et serveur nécessite le paquet :

  • rsync

Sauvegarde locale

Voici un exemple d'utilisation de rsync pour une sauvegarde locale.

Commande simple

La commande de base de rsync est la suivante :

rsync [OPTION] SOURCE DESTINATION

Les options utiles sont :

  • –dry-run : ne pas réaliser l'action, uniquement indiquer ce doit être fait (très pratique pour tester au début)
  • -a : Mode archive (récursif, préserve les symlinks, préserve les droits, préserve les dates, préserve le propriétaire et le groupe, préserve les fichiers spéciaux)
  • -v : verbeux
  • –delete : supprime les fichiers en trop dans la destination
  • –numeric-ids : le numéros de user et group sont conservés
  • –files-from=file : indique un fichier contenant la liste des sources
  • –exclude-from=file : indique un fichier contenant la liste des exclusions à ne pas sauvegarder

Exemple :

rsync -av --delete --numeric-ids --files-from=list_file --exclude-from=exclude_file SOURCE DEST

Script local

Ce paragraphe décrit comment automatiser la tâche :

Créer un répertoire pour y placer les fichiers, par exemple /etc/rsync, et créer les fichiers suivants :

  • list contenant la liste des répertoires à sauver
  • exclude contenant la liste des fichiers à ne pas sauver
  • sauve contenant le script :
#!/bin/sh
config_dir=/etc/rsync
rsync -avr --delete --numeric-ids --files-from=$config_dir/list --exclude-from=$config_dir/exclude / /sauvegardes/bender

Pour synchroniser, il suffit de lancer /etc/rsync/sauve

Exemple de liste des répertoires

dirs :

/etc
/var/lib/samba
/home

Exemple de liste des exclusions

exclude :

/home/matthieu/freevo2

Attention, ajouter un exclusion exclue le répertoire ou le fichier du traitement, il ne supprime pas les données précédement archivées.

Configuration du serveur

La mise en place d'un serveur permet d'effectuer une sauvegarde via le protocole rsync.

Paramètres globaux

Le fichier /etc/default/rsync contient les paramètres globaux. Par défaut aucun démon n'est démarré.

Afin de lancer le serveur rsync au démarrage, il faut modifier le paramètre suivant :

RSYNC_ENABLE=true

Configuration de rsyncd

Il faut ensuite définir la configuration du serveur rsyncd grâce au fichier /etc/rsyncd.conf.

Paramètres globaux

La permière partie du fichier contient les paramètres globaux :

# GLOBAL OPTIONS

#motd file=/etc/motd
log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=

lock file = /var/lock/rsyncd
uid=root
gid=root
hosts allow = 192.168.2.0/24 192.168.1.0/24 127.0.0.1
secrets file = /etc/rsyncd.secrets
use chroot = yes
read only=no
  • log file : emplacement des logs
  • pid file : fichier de pid
  • lock file : fichier de lock
  • uid : uid du démon
  • gid : gid du démon
  • hosts allow : ip autorisées à se connecter
  • secrets file : fichier des comptes rsync
  • use chroot : utilisation du chroot (l'accès au fichier est alors limité au répertoire du module) pour augmenter la sécurité
  • read only : limitation de l'accès à la lecture uniquement

Définition des modules

La deuxième partie définie les modules. Chaque module est une unité de sauvegarde.

# MODULE OPTIONS

[bender]
        path = /sauvegardes/bender
        comment = Sauvegarde de Bender
        auth users = bender

[fry]
        path = /sauvegardes/fry
        comment = Sauvegarde de Fry
        auth users = fry

[leela]
        path = /sauvegardes/leela
        comment = Sauvegarde de Leela
        auth users = leela

[nibbler]
        path = /sauvegardes/nibbler
        comment = Sauvegarde de Nibbler
        auth users = nibbler

[ftp]
        comment = FTP data
        path = /ftp
        uid = ftp
        gid = ftp
        read only = yes
        auth users = ftp

La définition d'un module commence par son nom entre crochets, et contient les options suivantes :

  • path : répertoire de sauvegarde sur les disques
  • comment : commentaires
  • auth users : utilisateurs rsync autorisés à se connecter
  • uid : uid du démon (pour remplacer l'uid global)
  • gid : gid du démon (pour remplacer le gid global)
  • read only : limite l'accès au module en lecture seule

Exemple de configuration

/etc/rsyncd.conf

# GLOBAL OPTIONS

#motd file=/etc/motd
log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=

lock file = /var/lock/rsyncd
uid=root
gid=root
hosts allow = 192.168.2.0/24 192.168.1.0/24 127.0.0.1
secrets file = /etc/rsyncd.secrets
use chroot = yes
read only=no

# MODULE OPTIONS

[bender]
        path = /sauvegardes/bender
        comment = Sauvegarde de Bender
        auth users = bender

[fry]
        path = /sauvegardes/fry
        comment = Sauvegarde de Fry
        auth users = fry

[leela]
        path = /sauvegardes/leela
        comment = Sauvegarde de Leela
        auth users = leela

[nibbler]
        path = /sauvegardes/nibbler
        comment = Sauvegarde de Nibbler
        auth users = nibbler

[ftp]
        comment = FTP data
        path = /ftp
        uid = ftp
        gid = ftp
        read only = yes
        auth users = ftp

/etc/rsyncd.secrets

bender:***
fry:***
leela:***
nibbler:***
ftp:***

Configuration du client distant

Ligne de commande

L'utilisation de rsync est globalement la même sur le poste client que lors d'une sauvegarde locale.
Les différences sont les suivantes :

  • la destination s'écrit sous la forme “utilisateur@serveur::destination” où destination commence par le nom du module
  • il faut saisir un mot de passe (ou le spécifier avec le fichier de mot de passe ”–password-file” )

Exemple :

rsync -avr --delete --numeric-ids /etc matthieu@bender::pc/backup1

Script distant Linux

Voici l'adaptation du script de sauvegarde pour un client distant.

Créer un répertoire pour y placer les fichiers, par exemple /etc/rsync, et créer les fichiers suivants :

  • list contenant la liste des répertoires à sauver
  • exclude contenant la liste des fichiers à ne pas sauver
  • password contenant le mot de passe
  • sauve contenant le script :
#!/bin/sh
config_dir=/etc/rsync
rsync -avr --delete --numeric-ids --password-file=$config_dir/password --files-from=$config_dir/list --exclude-from=$config_dir/exclude / leela@bender::leela

Pour synchroniser, il suffit de lancer /etc/rsync/sauve

Script distant Windows

Il existe plusieurs clients rsync pour Windows. Il est donc également possible de sauvegarder des ordinateurs sous Windows.

Un des logiciels les plus simple est cwRsync qui fournit la commande “rsync” en ligne de commande Windows.

Une fois cwRsync installé, son utilisation est identique à Linux. Voici l'adaptation du script de sauvegarde comme exemple :

Créer un répertoire pour y placer les fichiers, par exemple D:\scripts\rsync.fry, et créer les fichiers suivants :

  • list contenant la liste des répertoires à sauver
  • exclude contenant la liste des fichiers à ne pas sauver
  • password contenant le mot de passe
  • rsync.fry.bat contenant le script :
SET rsync_conf=/cygdrive/d/scripts/rsync.fry
"C:\Program Files\cwRsync\bin\rsync.exe" -avr --numeric-ids --delete --files-from=%rsync_conf%/list --exclude-from=%rsync_conf%/exclude --password-file=%rsync_conf%/password /cygdrive/ fry@bender::fry 
@pause

Pour synchroniser, il suffit de lancer D:\scripts\rsync.fry\rsync.fry.bat en double cliquant

Restauration

Pour restaurer un ou plusieur fichier il suffit d'utiliser l'emplacement de sauvegarde comme source.
Il est conseillé de restaurer dans un emplacement différent de la source car il n'est pas possible d'annuler.

Backup

  • le répertoire des scripts /etc/rsync
  • /etc/rsyncd.conf
  • /etc/rsyncd.secrets

Links

linux/sauvegardes.txt · Dernière modification: 2011/01/11 23:52 par matthieu
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki