Module 3
Chapitre 05 - Sauvegarde
1. Introduction
Les ordinateurs ne sont pas à l'abri d'une perte de données. Qu'elle soit engendrée par un problème matériel ou une erreur humaine. Il existe plusieurs systèmes permettant de pourvoir revenir à un état antérieur à la perte. Le principe est simple : faire des copies des données.
Amanda est un utilitaire qui permet de faire des sauvegardes via le réseau.
Grâce à Amanda, nous allons pouvoir sauvegarder des données sur plusieurs ordinateurs et de plusieurs façons différentes. Soit une sauvegarde total des données, appelé niveau 0, soit une sauvegarde incrémentale, appelé niveau 1.
1.1 La sauvegarde incrémentale
Sauvegarder toutes les données de plusieurs serveurs sensibles en même temps est pratiquement impossible et il faudrait une très grande capacité de stockage et ceci prendrai enormement de temps.
Il y a réellement peu de changement sur la totalité des données, la première fois, nous allons sauvegarder la totalité des données (niveau 0), ensuite on sauvegardera uniquement les données qui ont été modifiées (niveau 1). Cette technique permet d'économiser du temps et de la place.
2. Serveur
2.1 Installation
Nous allons installer Amanda à partir des sources. Premièrement télécharger la dernière version depuis le site officiel : http://www.amanda.org
Si vous utiliser un firewall, vous pouvez spécifier les ports utiliés pour le transfert. Par contre la requette pour lancer le transfert se fera toujours sur le port 10080
Nous allons créer un utilisateur Amanda qui servira à lancer le programme. Cet utilisateur devra etre ajouter au groupe "disk" pour avoir les droits en ecriture sur les medias de sauvegarde. Nous créons un utilisateur spécial pour des raisons de sécurité. Il est toujours préférable de ne pas lancer un service en temps que root
bash-2.05b$ groupadd amanda
bash-2.05b$ useradd -g amanda -G disk amanda
bash-2.05b$ tar zxvf amanda-x.y.z.tar.gz
bash-2.05b$ cd amanda-x.y.z
bash-2.05b$ ./configure \
> --with-user=amanda \
> --with-group=amanda \
> --with-config=/etc/amanda \
> --with-gnutar=`which tar` \
> --with-amandahosts
> ----with-portrange=50000,50100 \
bash-2.05b$ make
bash-2.05b$ make check
bash-2.05b$ make install
2.2 Fichiers de configuration
Tout d'abords, il faut bien choisir le serveur de sauvegarde. Amanda demande beaucoup de charge CPU car il compresse les fichiers. Il faut aussi prévoir une grande activité au niveau du media de sauvegarde et de la connexion réseaux.
Il est possible de créer plusieurs configurations. Ceci permet de mettre en place plusieurs politiques de sauvegarde. Chaque configuration a son propre répertoire qui contient 2 fichiers : amanda.conf et disklist.
Exemple : les fichiers de configuration pour "serveur" seront à placer dans "/etc/amanda/serveur/"
2.2.1 amanda.conf
# Fichier de configuration pour amanda
org serveur # nom de la configuration
mailto root # compte qui recoit le rapport envoyer par mail
dumpcycle 10 # nombre jour entre chaque sauvegarde complete
tapedev /dev/sda1 # chemain vers le media de sauvegarde
dumpuser qmanda # utilisateur qui va lancer la sauvegarde
inparallel 10 # nombre maximum de sauvegarde en simultané
netusage 300 # Bande passante maximale allouée à la sauvegarde en Ko
define dumptype serveur-dump {
# type de dump utilisé par le fichier disklist
comment "un commentaire pour le rapport"
compress none # compresse ou non les données.
# none : ne compresse pas
# client fast : compresse rapidement sur le client
# client best : compresse fortement sur le client
# server fast : compresse rapidement sur le serveur
# server best : compresse fortement sur le serveur
dumpcycle 10 # nombre jour entre chaque sauvegarde complete
program "GNUTAR" # fait une archive
strategy standard # Strategie a appliquer
# standard : straygie normal
# nofull : ne fera que des sauvergardes incrémentiels
# noinc : ne fera que des sauvegardes completes
# skip : ne fera aucune sauvegarde
}
2.2.2 distlist
Le fichier distlist contient les machines qu'il faut sauvegarder.
Il est composé du nom de la machine (FQDN si possible), la racine de la sauvegarde et le type de sauvegarde (voir "define dumptype ci-dessus").
# machine chemain type de sauvegarde
web-server /www serveur-dump
2.2.3 amandahosts
Le fichier "/home/amanda/.amandahosts" ou "/etc/amanda/amandahosts" suivant les versions, contient le couple nom de machines cliente et utilisateur pouvant se connecter au serveur pour faire une restauration. Ce fichier est unique, il sera utilisé par toute les configurations.
#machine utilisateur
web-server root
2.2.4 /home/dumps
Ce dossier va être utile au cas où notre disque de sauvegarde soit plein. Amanda y stockera les donneés en attendant que le disque soit changé.
bash-2.05b$ mkdir /home/dumps
bash-2.05b$ chown amanda:amanda /home/dumps
bash-2.05b$ chmod 660 /home/dumps/
Dans le cas où votre disque est plein et que Amanda utilise se dossier. La commande qui permet de transferer le contenu du dossier vers le nouveau disque de sauvergarde est :
bash-2.05b$ amflush -c serveur
"serveur" étant le nom de notre configuration
2.3 Lancer Amanda
Pour lancer Amanda, nous allons utilisé Xinetd. Xinetd est super démon, on l'utilise pour gérer les connexions réseaux.
Premièrement il faut éditer "/etc/xinetd.conf"
service amanda
{
protocol = udp
socket_type = dgram
wait = yes
user = amanda
group = amanda
groups = yes
server = /usr/local/libexec/amandad
}
service amandaidx
{
protocol = tcp
socket_type = stream
wait = no
user = amanda
group = amanda
groups = yes
server = /usr/local/libexec/amindexd
}
service amidxtape
{
protocol = tcp
socket_type = stream
wait = no
user = amanda
group = amanda
groups = yes
server = /usr/local/libexec/amidxtaped
}
Xinetd a besoin connaître quel port il doit écouter et vers quel programme renvoyer la requête.
Pour cela il faut renseigner le fichier "/etc/services"
amanda 10080/udp
kamanda 10081/udp
kamanda 10081/tcp
amandaidx 10082/tcp
amidxtape 10083/tcp
Ensuite il faut relancer Xinetd avec la commande
bash-2.05b$ killall -HUP xinetd
3. Client
3.1 Installation
Même procedure que pour le serveur, nous créons un utilisateur amanda et nous installons Amanda. Vous pouvez remarquer que nous passons l'option "-without-server" au script configure afin d'installer une version plus minimale.
bash-2.05b$ groupadd amanda
bash-2.05b$ useradd -g amanda -G disk -s /bin/false amanda
bash-2.05b$ tar zxvf amanda-x.y.z.tar.gz
bash-2.05b$ cd amanda-x.y.z
bash-2.05b$ ./configure \
> --with-user=amanda \
> --with-group=amanda \
> --with-config=/etc/amanda \
> --with-gnutar=`which tar` \
> --with-amandahosts \
> ----with-portrange=50000,50100 \
> --without-server
bash-2.05b$ make
bash-2.05b$ make check
bash-2.05b$ make install
3.2 Configuration de amandahosts
Tout comme pour la partie serveur, nous allons enter dans le fichier amandahosts le nom du serveur et de l'utilisateur qui sera autoriser à se connecter au client pour faire une sauvegarde.
# machine utilisateur
backup-server Amanda
3.3 Lancer Amanda
Amanda va etre lancé via Xinetd. Pour cela il faut modifier les fichiers xinetd.conf et services comme pour le serveur.
# Fichier xinetd.conf
service amanda
{
protocol = udp
socket_type = dgram
wait = yes
user = amanda
group = amanda
groups = yes
server = /usr/local/libexec/amandad
}
# Fichier /etc/services
amanda 10080/udp
kamanda 10081/udp
kamanda 10081/tcp
amandaidx 10082/tcp
amidxtape 10083/tcp
Ensuite il faut relancer xinetd avec la commande
bash-2.05b$ killall -HUP xinetd
4. Demarrer une sauvegarde
4.1 Verification
A chaque nouveau disque, il faudra lui donner un nom. Ce nom servira pour retouver facilement sur quel disque se trouve quelle sauvegarde.
bash-2.05b$ su amanda -c "amlabel serveur Serveur-001"
Ensuite nous allons tester notre configuration. Ce test doit etre effectué à chaque fois que l'on ajoute un client à une configuration.
bash-2.05b$ su amanda -c "amcheck serveur"
4.2 Programmer les sauvegardes
Nous allons editer la crontab de l'utilisateur amanda, afin de lancer une sauvegarde une fois par jour a 2:05 AM.
Pour plus d'information sur cron, se référer au cours donné en P1 disponible sur le site du laboratoire : http://www.labo-linux.org
bash-2.05b$ su amanda -c "crontab -e"
05 02 * * * /usr/local/sbin/amdump serveur
bash-2.05b$ su amanda -c "crontab -l"
5. Faire une restoration
La restoration devra se faire depuis une machine cliente
Nous allons faire un exemple. Imaginons que nous voulions restorer le fichier "/www/labo-linux.org/index.php" et le dossier "/www/labo-linux.org/images/"
Premièrement il faut se placer dans le dossier racine de la sauvegarde soit "/www"
bash-2.05b$ cd /www
Ensuite on lance la commande amrecover avec le nom de la sauvegarde
bash-2.05b$ amrecover -c serveur
Une fois connecté, on va renseigner le nom du client, la date de la sauvegarde et la racine de la sauvergarde
sethost web-server
setdate 2004-08-23
setdisk /www
Puis garce à la commande "add", nous allons spécifier le fichier et le dossier à restorer
cd /www/labo-linux.org
add index.php
add images/
La commande "extract restorera les fichiers et dossiers sélectionnés.
extract