Sauvergarder son serveur
Dès qu’on exploite un serveur, la question des sauvegardes se pose.
Cette question n’est pas nouvelle, c’est pourquoi il existe divers utilitaires (dont rsync et rsnapshot) qui font très bien le travail.
Il suffit juste savoir s’en servir.
Edit : revu au 4 août 2009
L’objectif
Le but est de pouvoir sauvegarder un serveur :
- en intégralité,
- périodiquement,
- sans pour autant exploser son espace de stockage
- et avec une historique de sauvegarde quotidienne et hebdomadaire.
Pré requis
Cet article prendra comme base de départ, la présence de 2 serveurs à base *nix (dans notre cas ce sera debian etch et lenny).
Les outils utilisés seront :
Pour installer ces outil sur un serveur debian, apt est votre ami :
apt-get install rsnapshot rsync
Configurer rsnapshot
Toute la configuration se fait dans le fichier /etc/rsnapshot.conf
Définir le répertoire de backup
Par défaut, rsnapshot prévoit de copier dans une repertoire du home, pour ma part je preéres utiliser le repertoire /var/
donc dans /var/snapshots/
# All snapshots will be stored under this root directory.
#
snapshot_root /var/snapshots/
Définir les commandes bash
Rsnapshot est prévu pour fonctionner sur un ensemble de plateformes plus ou moins différentes. Nous personnalisons certaines commandes pour exploiter au mieux notre base *nix.
cmd_cp /bin/cp
Rsnapshot posséde en interne un clone imparfait de cp
. Utiliser cp
offre en plus entre autre la gestion des liens système tel que FIFO, sockets, les périphériques, ...
cmd_du /usr/bin/du
En fonction des systèmes du
n’est pas codé de la même façon, c’est pourquoi nous devons spécifier nous même le chemin de cet utilitaire. Si nous avons un vieux système nous pouvons profiter de du_args
pour ajouter les bon paramétres à cette commande.
cmd_rsnapshot_diff /usr/bin/rsnapshot-diff
rsnapshot-diff
est un utiltaire propre à rsnapshot
pour comparer 2 sauvegardes entre elles.
Prévoir des copies distante
Pour sauvegarder des données entre 2 serveurs distants, nous devons activer certaines options spécifiques.
cmd_ssh /usr/bin/ssh
link_dest 1
La première option permet d’utiliser ssh pour rapatrier des données sur un serveur distant. La seconde permet d’exploiter au mieux les outils de copie entre rsync
et cp
(principalement pour réaliser des liens durs récursifs et gérer les fichiers spéciaux)
Filtrer les fichiers
Si on défini une sauvegarde compléte du systéme, il faut penser à ignorer :
- le repertoire de sauvegarde
- les repertoires systémes (ceux qui pointent sur le matériel)
- les fichiers et repertoires temporaires
Pour ceci il faut utiliser le paramétre exclude_file
exclude_file /var/cache/rsnapshot/exclude_file.txt
Dans l’exemple précédent, on indique que le fichier /var/snapshots/exclude_file.txt
contient la liste des fichiers à ignorer.
### transient directories - contents
### tmp ###
+ tmp/
- **/tmp/**
+ /tmpfs/
- /tmpfs/**
### transient ###
+ /proc/
- /proc/**
+ /mnt/
- /mnt/**
+ /cdrom/
- /cdrom/**
+ /sys/
- /sys/**
### cache ###
# mozilla
+ Cache/
- **/Cache/**
# ccache.samba.org
+ ccache/
- **/ccache/**
+ .ccache/
- **/.ccache/**
# others
+ cache/
- **/cache/**
+ xover-cache/
- **/xover-cache/**
### obj ###
# kernel build
- usr/src/**.o
# special library .o (may be RH specific?)
+ usr/*/lib/**.o
+ usr/lib/**.o
# all others
- *.o
### backup ###
- *~
+ /var/backups/
### rsnapshot ###
+ /var/snapshots/
- /var/snapshots/**
Definir les sauvegardes
Sauvegarde locale
On considére la présence d’un disque dur dédié aux sauvegardes. Celui est monté sur /var/snapshots/
. Dans ce cas :
backup / localhost/
On indique dans ce cas qu’on sauvegarde l’intégralité du serveur /
dans le repertoire /var/snapshots/[rotation]/localhost
. [rotation]
correspond aux rotations des sauvegardes définies précédemment (hourly
, dayly
, ....)
Sauvegarde distante
Dans ce cas le serveur de sauvegarde se connecte via ssh sur le serveur maitre et effectue les copies demandées.
backup user@serveur_distant:/var/ serveur_distant/
Il est important de noté que l’utilisateur user
doit exister sur serveur_distant
. Pour permettre l’automatisation du script, il faut generer une clef ssh dédiée et la sauvegarder convenablement sur les serveurs.
Cron et sauvegarde planifiée
Déclarer le nombre de copies
Le nombre de sauvegarde et leur rotation sont défini via le paramétre interval
Dans l’exemple, on indique qu’il y aura :
- 6 sauvegardes nommées hourly,
- 7 daily
- et aucune weekly ou monthly du fait du
#
Lorsque rsnapshot aura traité toute les sauvegardes et rotations, nous aurons 13 copies :
- /var/snapshots/hourly.0/
- ...
- /var/snapshots/hourly.5/
- /var/snapshots/daily.0/
- ...
- /var/snapshots/daily.6/
Il faut noter que l’ordre dans lequel est défini les interval
est important car lors des rotations daily.0/
sera copié depuis hourly.5/
et hourly.0/
sera syncrhonisé depuis le système.
Activer les rotations (cron)
Une fois les rotations définies, il faut lancer rsnspashot selon ces intervalles. Par conséquent il faut éditer /etc/cron.d/rsnapshot
, si on conserver les choix fait précédemment.
# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.
0 */4 * * * root /usr/bin/rsnapshot hourly
30 3 * * * root /usr/bin/rsnapshot daily
#0 3 * * 1 root /usr/bin/rsnapshot weekly
#30 2 1 * * root /usr/bin/rsnapshot monthly
Selon cet exemple on réalise :
- une copie hourly toute les 4h soit 6 par jours.
- une copie quotidienne à 3h30
Ressources :
- http://aplawrence.com/Bofcusm/2409.html
- http://linuxfocus.org/Francais/Marc...
- http://www.rsnapshot.org/howto/1.1/...
- http://troy.jdmz.net/rsync/index.html
- http://www.rsnapshot.org/rsnapshot.html
- http://wiki.centos.org/HowTos/Rsnap...
- http://kurup.org/blog/one-entry?ent...
- http://www.technetra.com/writings/a...
Messages
1. Sauvergarder son serveur, 26 février 2012, 20:35, par ANCEL Alain
Salut,
super tuto mais moi je début et j’ai installé un server ubuntu chez moi ou j’ai déjà mon site qui tourne et 2 3 petites choses.
Quand je vois ça je me dis ok je vois ce qu’il veut dire mais la ligne est fausse :
exclude_file /var/cache/rsnapshot/exclude_file.txt
Dans l’exemple précédent, on indique que le fichier /var/snapshots/exclude_file.txt contient la liste des fichiers à ignorer
Ton exclude file est à deux endroits ???
Moi perso je l’ai mis dans mon home/backup
Le truc qui me chipotte c’est que un fois le fichier de conf terminé faut il lancer la ligne de commande : backup user@ etc ...
Car la moi il me dit que open-afs client est pas installé
Merci d’avance
Alain A
2. Sauvergarder son serveur, 26 février 2012, 20:45, par ANCEL Alain
non c’est bon je me suis trompé ...
3. Sauvergarder son serveur, 26 février 2012, 22:07, par ANCEL Alain
Rebonjour,
Donc après avoir tout fait ( server distant via ssh )
J’ai lancé un sudo rsnapshot configtest
J’ai un Syntax ok
C’est peu être con mais comment lancer de suite la sauvegarde pour tester.
J’ai essayé de trouver un bash mais tout devient assez compliqué.
Cdt,
Alain A
1. Sauvergarder son serveur, 27 février 2012, 09:09, par km
Bonjour
Content de voir ce tutoriel servir encore. Pour tester la configuration on a le choix entre :
rsnapshot -t hourly
pour voir ce qui se passerait mais sans effectuer la sauvegarderrsnapshot hourly
pour exécuter pour de vrai la sauvegarder horaire.À la place de hourly, on peut tout à fait utiliser daily ou une autre valeur de période selon sa configuration.
Pour ceci je trouve la documentation officielle très complète