Retour : Page Principale > Politique de sécurité

Chartre de sauvegarde des données de Tela Botanica


Principe de la sauvegarde sur le serveur de sauvegarde Polaris

Pour les postes individuels, des sauvegardes quotidiennes se font toutes les 30mn durant la journée.
Elles sont déclenchées par le serveur de sauvegarde qui tente de réaliser la sauvegarde à l'aide de rsync.
La synchronisation se fait entre le dossier /home/ du poste de la personne et le dossier /home/ de cette même personne sur le serveur de sauvegarde.

Pour les serveurs, ils envoient durant la nuit l'ensemble de leurs fichiers à sauvegarder dans un dossier de /home du serveur de sauvegarde portant le nom du serveur à sauvegarder.
Par exemple /home/sequoia ou /home/coris pour respectivement le serveur "Sequoia" et le serveur "Coris".

La copie des sauvegardes sur plusieurs jours est assurée par l'outil snapshot présent sur le serveur de sauvegarde.
Il se charge de copier les dossiers /home/ de chacun des postes individuels et les dossiers de sauvegarde des serveurs sur plusieurs jours (7 jours glissant) et mois (2 mois glissant)
Ces sauvegardes sont accessibles par SFTP sur le serveur de sauvegarde sous le nom :
  • /sauvegarde/daily.1 : jour - 1
  • /sauvegarde/daily.2 : jour - 2
  • ...
  • /sauvegarde/daily.7 : jour - 7
  • /sauvegarde/monthly.1 : mois - 1
  • /sauvegarde/monthly.2 : mois - 2

Configuration de SNAPSHOT sur le serveur de sauvegarde
Programme : /usr/local/bin/snapshot.sh
Service : /etc/snapshot
Pour mieux contrôler l'heure de déclenchement utiliser : crontab -e

crontab -e de root doit contenir les ligne suivantes :
# m h  dom mon dow   command
# Snapshots
01      00      *       *       1-5     /usr/local/bin/snapshot.sh daily 1>/dev/null 2>/dev/null
01      02      *       *       0       /usr/local/bin/snapshot.sh weekly 1>/dev/null 2>/dev/null
01      04      1       *       *       /usr/local/bin/snapshot.sh monthly 1>/dev/null 2>/dev/null


Le programme effectuant la sauvegarde est : /usr/local/bin/snapshot.sh
Les fichiers de configuration de ce programme sont :
  • /etc/snapshot/exclude.txt : extension ou répertoire a exclure
  • /etc/snapshot/include.txt : répertoire à sauvegarder
  • /etc/snapshot/settings.txt : parametres de l'application

Contenu de ces fichiers :
exclude.txt : vide.
include.txt
/etc
#/home/alex/sauvegardes
/home/aurelien/sauvegardes
#/home/david/sauvegardes
/home/delphine/sauvegardes
/home/elise/sauvegardes
#/home/emilie/sauvegardes
/home/greg/sauvegardes
/home/grosdur
/home/jeremy/sauvegardes
#/home/jessica/sauvegardes
/home/jpm/sauvegardes
/home/louise/sauvegardes
/home/mamode/sauvegardes
#/home/mareva/sauvegardes
/home/marie/sauvegardes
#/home/mathilde/sauvegardes
/home/sequoia
#/home/tam/sauvegardes
#/home/thomas/sauvegardes
/home/vero/sauvegardes
#/home/vio/sauvegardes

settings.txt
# The "daily" snapshot is the only really time-consuming one; the weekly etc snapshots
# just pop theirs off the stack.
dailymax=10
monthlymax=2

# log file gets overwritten on every snapshot.
logfile=/var/log/snapshot.log

# Backup root.  All snapshots will be stored here:
# monthly.1 is taken from the top daily snapshot.
# must exist
backuproot=/sauvegarde

# Files used to store settings.
backup=`cat /etc/snapshot/include.text`
excludefile=/etc/snapshot/exclude.text


Sauvegarde du contenu des serveurs
Chaque serveur doit effectuer une copie de ses fichiers durant la nuit et les placer dans un dossier à son nom dans /home/ sur le serveur de sauvegarde.
On a ainsi : /home/sequoia/
Sur le serveur de sauvegarde :
  • Créer un compte backup dont le home est : /var/backups
  • Dans /var/backups créer un répertoire .ssh contenant un fichier authorized_keys qui contiendra les clefs publique des comptes backup des serveur à sauvegarder.
  • Attention aux droits sur le .ssh : rwx r r (744) et au propriétaire backup:backup

Sur chaque serveur à sauvegarder :
  • Créer un compte backup dont le home est : /home/backup
  • Dans /home/backups un répertoire .ssh doit contenir la clé privé et la clé publique à copier dans le fichier authorized_keys sur le serveur de sauvegarde.
  • Attention aux droits sur le .ssh : rw r r (644) et au propriétaire backup:backup
  • Programme réalisant les backup doit être présent dans /usr/local/sbin/backup_dist.sh et il est appelé dans crond.daily avec /usr/local/sbin/backup_dist.sh nom_repertoire_a_sauvegarder.
  • Il faut l'adapter backup_dist.sh en fonction de la destination :

Configuration de backup_dist.sh sur le serveur de sauvegarde
Programme : /usr/local/sbin/backup_dist.sh
#!/bin/bash
source=$1
destination=backup@162.38.234.1:/sauvegarde/sequoia/
rsync --stats --exclude *tmp* -v -e 'ssh -i /var/backups/.ssh/id_rsa' -R -a --delete $source $destination >> $2


Sauvegarde des bases de données des serveurs
Par défaut chaque base de données portant le même nom que son utilisateur sera sauvegardée.
Un dump de la base est réalisé puis zippé et stocké dans le dossier : /home/utilisateur/bases/
Ces dump seront ensuite sauvegardé sur le serveur de sauvegarde via le programme de backup du serveur (voir ci-dessus).
La liste des bases à sauvegardées sont situées sur les serveurs dans le fichier : /etc/cron.daily/mysqlbackup

Sur chaque ligne, indiquez la commande à lancer puis l'utilisateur suivi des bases à sauver :
#!/bin/bash
/usr/local/sbin/backup_mysql gentiana gentiana gentiana_prod_eflore_v1_1_historique gentiana_prod_eflore_v1_1_principale
/usr/local/sbin/backup_mysql telabotap telabotap tela_prod_bibliobota tela_prod_botanica tela_prod_eflore_v1_1_principale tela_prod_eflore_v1_1_historique tela_prod_spip_actu tela_prod_spip_afcev tela_prod_v3 tela_prod_v4 tela_prod_wikini eflorete cel tb_cel tb_coel tb_herbiers tb_hit_indexation tb_hit_moissonnage tb_eflore

/usr/local/sbin/backup_mysql photoflo photoflo
/usr/local/sbin/backup_mysql iacpt iacpt
/usr/local/sbin/backup_mysql telabotaa telabotaa
/usr/local/sbin/backup_mysql onemfran onemfran
/usr/local/sbin/backup_mysql ftpE ftpE

/usr/local/sbin/backup_mysql plantnet plantnet
/usr/local/sbin/backup_mysql obssaiso obssaiso ods
/usr/local/sbin/backup_mysql junior junior
/usr/local/sbin/backup_mysql referentiels referentiels
/usr/local/sbin/backup_mysql pterido2 pterido2
/usr/local/sbin/backup_mysql legumino legumino
/usr/local/sbin/backup_mysql herbiera herbiera
/usr/local/sbin/backup_mysql telainse telainse ti_efaune ti_joomla15 ti_wiki
/usr/local/sbin/backup_mysql plantmail plantmail
/usr/local/sbin/backup_mysql bryophyt bryophyt
/usr/local/sbin/backup_mysql svn svn
/usr/local/sbin/backup_mysql premiere premiere
/usr/local/sbin/backup_mysql lichensm lichensm
/usr/local/sbin/backup_mysql herbierm herbierm

/usr/local/sbin/backup_mysql champili champili
/usr/local/sbin/backup_mysql champign champign

Configuration de backup_mysql sur le serveur de sauvegarde
Programme : /usr/local/sbin/backup_mysql
#/bin/bash
# Sauvegarde base de donnee dans /home/utilisateur/bases sur 7 jours ...
# Mai 2004 David Delon Inspiration Faq ovh
# Parametres :
# $1 utilisateur
# $2 base (ou liste de bases)
user=$1
/bin/mkdir -p /home/$user/bases/tmp 2>/dev/null
cd /home/$user/bases;
shift
for base in $*
do
# On verifie que la base existe
        /usr/bin/touch tmp/$base.sql
        if [ -d /home/mysql/$base ] ; then
                /usr/local/mysql/bin/mysqldump --add-drop-table -u root -p[mettreIciLeMdp] $base -f > tmp/$base.sql;
        fi
done
/bin/tar zcf bases-$(/bin/date -I).tar.gz tmp/*.sql --remove-files
/usr/bin/find /home/$user/bases/bases*.gz -mtime +7 -exec /bin/rm -f {} \;
chown admin:users /home/$user/bases -R


Sauvegarde du contenu des postes individuels
crontab -e de root doit contenir les lignes (au 07-03-2012) :
# m h  dom mon dow   command
# Snapshots
01      00      *       *       1-5     /usr/local/bin/snapshot.sh daily 1>/dev/null 2>/dev/null
01      02      *       *       0       /usr/local/bin/snapshot.sh weekly 1>/dev/null 2>/dev/null
01      04      1       *       *       /usr/local/bin/snapshot.sh monthly 1>/dev/null 2>/dev/null
# Sauvegardes des postes
30      9       *       *       1-5     /usr/local/sbin/backup_adansonia.sh             aurelien        162.38.234.9
0       10      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             delphine        162.38.234.3
30      10      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             jeremy          162.38.234.8
#30     10      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             emilie          162.38.234.4
0       11      *       *       1-5     /usr/local/sbin/backup_adansonia_macosx.sh      mamode          162.38.234.5
30      11      *       *       1-4     /usr/local/sbin/backup_adansonia.sh             audrey          162.38.234.2
0       12      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             jpm             162.38.234.6
30      12      *       *       1,3     /usr/local/sbin/backup_adansonia.sh             greg            162.38.234.30
0       13      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             marie           162.38.234.10
#10     13      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             tam             162.38.234.10
0       14      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             elise           162.38.234.7
#0      15      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             mareva          162.38.234.11
0       15      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             louise          162.38.234.11
15      15      *       *       4-5     /usr/local/sbin/backup_adansonia_dossier.sh     louise          162.38.231.72   mpu-sauvegardes
30      15      *       *       1-5     /usr/local/sbin/backup_adansonia.sh             vero            162.38.234.15
# Rapports des sauvegardes
0       17      *       *       1-5     /usr/local/sbin/backup_rapport.sh       jpm
05      17      *       *       1-5     /usr/local/sbin/backup_rapport.sh       david
10      17      *       *       1-5     /usr/local/sbin/backup_rapport_nettoyage.sh
00      01      *       *       1-5     /usr/local/sbin/backup_place_disque.sh


Configurer les sauvegardes d'un poste individuel
Voir la méthode de sauvegarde des postes individuel

Pour les sauvegardes "hors site" (en cas de vol, incendie ...)
Actuellement, le serveur de sauvegarde est dans un local à part. Il n'y a donc aucune sauvegarde hors site.
Lors du remplacement du serveur de sauvegarde, il peut être envisagé de mettre en place une solution de sauvegarde sur disque externe.
Le disque serait branché sur une machine de travail, le serveur de sauvegarde détectera se branchement et déclanchera la sauvegarde. Un mail préviendra l'administrateur lorsque la sauvegarde sera terminée.