Backup auto » Historique » Version 11
Stéphane Leblond, 29/10/2010 17:43
1 | 1 | Stéphane Leblond | h1. Sauvegarde automatique des données de GEPI |
---|---|---|---|
2 | |||
3 | La procédure ci-dessous est largement inspirée de ce document : http://gepi.mutualibre.org/documents/gepi/doc/4_sauvegarde_automatique_donnees_gepi.pdf |
||
4 | 2 | Stéphane Leblond | |
5 | |||
6 | Je vais supposer ici que : |
||
7 | * GEPI est installé sur un serveur Debian ou Debian-like dans le répertoire /var/www |
||
8 | 3 | Stéphane Leblond | * un compte "spécial sauvegarde" est créé et nommé "sauve". En super-utilisateur faire : <pre>adduser sauve</pre> |
9 | 4 | Stéphane Leblond | |
10 | Se connecter en tant qu'utilisateur "sauve" et taper : |
||
11 | |||
12 | <pre> |
||
13 | 5 | Stéphane Leblond | mkdir backup backuph |
14 | </pre> |
||
15 | On crée ici deux répertoires qui vont contenir les sauvegardes. |
||
16 | Puis |
||
17 | <pre> |
||
18 | 4 | Stéphane Leblond | crontab -e |
19 | </pre> |
||
20 | 5 | Stéphane Leblond | On donne ici accès au crontab de l'utilisateur "sauve" |
21 | |||
22 | 4 | Stéphane Leblond | |
23 | 6 | Stéphane Leblond | Entrer les lignes suivantes : |
24 | 4 | Stéphane Leblond | |
25 | <pre> |
||
26 | 0 1 * * * mysqldump -u user_gepi_mysql -pmot_de_passe -x -e -B gepi > /home/sauve/backup/gepi`date +\%Y\%m\%d`.sql && gzip /home/sauve/backup/gepi`date +\%Y\%m\%d`.sql |
||
27 | 15 1 * * 1 tar cvfz /home/sauve/backup/documents`date +\%Y\%m\%d`.tar.gz /var/www/gepi/documents |
||
28 | 1 | Stéphane Leblond | 30 1 * * * find /home/sauve/backup -type f -mtime +15 | xargs -r -n 10 rm |
29 | 30 * * * * mysqldump -u user_gepi_mysql -pmot_de_passe -e -B gepi > /home/sauve/backuph/hgepi`date +\%Y\%m\%d\%H\%M`.sql && gzip /home/sauve/backuph/hgepi`date +\%Y\%m\%d\%H\%M`.sql |
||
30 | 45 1 * * * find /home/sauve/backuph -type f -mtime +1 | xargs -r -n 10 rm |
||
31 | </pre> |
||
32 | 6 | Stéphane Leblond | |
33 | 8 | Stéphane Leblond | Faire CTRL+X puis o (ou y) pour sauvegarder .... si "nano" est votre éditeur de texte |
34 | 6 | Stéphane Leblond | |
35 | Voici la signification des commandes entrées dans le crontab de sauve : |
||
36 | |||
37 | * Sauvegarde de la base "gepi" avec fermeture des tables sous la forme "gepiaaaammjj.sql.gz" dans le répertoire /home/sauve/backup/ tous les jours à 1h |
||
38 | |||
39 | * Sauvegarde du répertoire "documents" sous la forme documentsaaaammjj.tar.gz dans /home/sauve/backup/ tous les lundis à 1h15 |
||
40 | |||
41 | * On efface tous les fichiers de /home/sauve/backup vieux de plus de 15 jours tous les jours à 1h30 |
||
42 | |||
43 | * Sauvegarde de la base "gepi" sans fermeture des tables sous la forme "hgepiaaaammjjHHMM.sql.gz" dans le répertoire /home/sauve/backuph/ toutes les heures |
||
44 | |||
45 | * On efface tous les fichiers de /home/sauve/backuph vieux de plus de 1 jour tous les jours à 1h45 |
||
46 | 7 | Stéphane Leblond | |
47 | 1 | Stéphane Leblond | h1. Rapatriement des sauvegardes sur un serveur distant |
48 | 8 | Stéphane Leblond | |
49 | Sur ce serveur, vous devez avoir un accès ssh "sans mot de passe" avec une clef ssh de sécurité au serveur qui hébéerge GEPI. |
||
50 | |||
51 | h2. Génération et transfert d'une clef ssh sur le serveur hébergeant GEPI |
||
52 | |||
53 | Sur le serveur de sauvegarde (Debian ou Debian-like également), je suppose qu'un compte adminlocal existe. |
||
54 | * Génération d'une paire de clefs : |
||
55 | <pre> |
||
56 | ssh-keygen -t dsa -f .ssh/gepi_save |
||
57 | </pre> |
||
58 | Cette commande a généré une paire de clefs dans le répertoire .ssh/ de adminlocal. Ces clefs se nomment gepi_save (clef privée) et gepi_save.pub (clef publique). |
||
59 | *Il faut laisser la paraphrase vide lors de la génération* |
||
60 | |||
61 | Il faut ensuite copier la clef publique dans le fichier /home/sauve/.ssh/authorized_keys du serveur qui héberge GEPI |
||
62 | 10 | Stéphane Leblond | <pre> |
63 | ssh-copy-id -i ~/.ssh/gepi_save.pub sauve@ip_serveur_gepi |
||
64 | </pre> |
||
65 | La clef est alors copiée dans le répertoire personnel de "sauve" sur le serveur où est hébergé GEPI. On se connecte à "sauve" en faisant : |
||
66 | <pre> |
||
67 | ssh sauve@ip_serveur_gepi |
||
68 | </pre> |
||
69 | puis on copie la clef |
||
70 | <pre> |
||
71 | 11 | Stéphane Leblond | cat gepi_save.pub >> .ssh/authorized_keys |
72 | 10 | Stéphane Leblond | </pre> |
73 | 1 | Stéphane Leblond | |
74 | 10 | Stéphane Leblond | Maintenant la machine qui va recevoir les sauvegardes peut se connecter au compte "sauve" du serveur qui héberge GEPI sans mot de passe. |
75 | 9 | Stéphane Leblond | |
76 | 8 | Stéphane Leblond | h2. Automatisation su rapatriement des sauvegardes |
77 | |||
78 | On a créé trois répertoires de la manière suivante : |
||
79 | <pre> |
||
80 | mkdir sbackup sbackuph scripts |
||
81 | </pre> |
||
82 | On crée ici deux répertoires dans lesquels on va rapatrier les sauvegardes contenues sur le compte "sauve" (sbackup sbackuph) et un répertoire "scripts". |
||
83 | 11 | Stéphane Leblond | Puis dans le répertoire "script", on crée 2 fichiers par : |
84 | 1 | Stéphane Leblond | <pre> |
85 | 11 | Stéphane Leblond | touch rsync.log |
86 | touch sauve_sync.sh |
||
87 | </pre> |
||
88 | |||
89 | Le fichier sauve_sync.sh doit contenir les lignes suivantes : |
||
90 | |||
91 | <pre> |
||
92 | #! /bin/bash |
||
93 | log="/home/adminlocal/scripts/rsync.log"; |
||
94 | date=$(date +%Y-%m-%d-%H:%M); |
||
95 | echo $date >> /home/adminlocal/scripts/rsync.log; |
||
96 | rsync -avz -e "ssh -i /home/adminlocal/.ssh/gepi_save" sauve@ip_serveur_gepi:/home/sauve/backup/ /home/adminlocal/sbackup/ >> /home/adminlocal/scripts/rsync.log 2>&1 |
||
97 | rsync -avz -e "ssh -i /home/adminlocal/.ssh/gepi_save" sauve@ip_serveur_gepi:/home/sauve/backuph/ /home/adminlocal/sbackuph/ >> /home/adminlocal/scripts/rsync.log 2>&1 |
||
98 | </pre> |
||
99 | On rend ce fichier exécutable par un : |
||
100 | <pre> |
||
101 | chmod +x /home/sauve/scripts/sauve_sync.sh |
||
102 | </pre> |
||
103 | Ensuite on fait exécuter ce script tous les jours à 1h30 : |
||
104 | <pre> |
||
105 | 1 | Stéphane Leblond | crontab -e |
106 | </pre> |
||
107 | 11 | Stéphane Leblond | On donne ici accès au crontab de l'utilisateur "adminlocal" et on y colle la ligne suivante : |
108 | <pre> |
||
109 | 30 01 * * * sh /home/adminlocal/scripts/sauve_sync.sh |
||
110 | 30 23 * * * /usr/bin/find /home/adminlocal/sbackup -type f -mtime +60 | xargs -r -n 10 rm |
||
111 | 35 23 * * * /usr/bin/find /home/adminlocal/sbackuph -type f -mtime +60 | xargs -r -n 10 rm |
||
112 | </pre> |
||
113 | Les deux dernières lignes servent à supprimer les sauvegardes qui ont plus de deux mois. |
||
114 | |||
115 | Le script "sauve_sync.sh" synchronise les sauvegardes faites par "sauve" (serveur hébergeant GEPI) sur votre serveur de sauvegarde en indiquant ce qui s'est passé dans rsync.log (avec la date et l'heure). |