diff --git a/docs/SauvegardesBases.md b/docs/SauvegardesBases.md
index 4b8af2c2..7d7a44f0 100644
--- a/docs/SauvegardesBases.md
+++ b/docs/SauvegardesBases.md
@@ -1,6 +1,5 @@
+# Mise en place de sauvegardes des bases de données ScoDoc 9
-
-# Mise en place de sauvegardes des bases de données ScoDoc 9
Il est ***vivement recommandé*** de mettre en place une stratégie de sauvegarde
permettant de rétablir le service en minimisant les pertes de données à la suite
d'un accident majeur mais probable comme: crash de disque dur, bug, vol du
@@ -8,22 +7,22 @@ serveur, incendie...
Nous recommandons d'agir à deux niveaux:
- * sauvegarde des bases de données postgresql: dump des bases dans des fichiers.
- Le script donné ci-dessous peut se charger de gérer cela.
+* sauvegarde des bases de données postgresql: dump des bases dans des fichiers.
+Le script donné ci-dessous peut se charger de gérer cela.
- * sauvegarde du système complet (et de ses disques durs): la forme dépend de
- l'environnement (machine virtuelle ou non...). Dans tous les cas, les données
- doivent être sauvegardées dans une salle (voire un bâtiment) différente de
- celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une
- sauvegarde quotidienne (nocturne) est suffisante.
+* sauvegarde du système complet (et de ses disques durs): la forme dépend de
+l'environnement (machine virtuelle ou non...). Dans tous les cas, les données
+doivent être sauvegardées dans une salle (voire un bâtiment) différente de
+celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une
+sauvegarde quotidienne (nocturne) est suffisante.
Notons que ScoDoc sauvegarde de nombreuses informations sous le répertoire
`/opt/scodoc-data` (en particulier les photos, les documents archivés et divers
réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en
plus des bases de données SQL.
+## Dump des bases de données
-## Dump des bases de données
Le script `backup_db9` (fourni dans le répertoire `/opt/scodoc/tools/backups`)
peut être utilisé pour effectuer des sauvegardes automatisées des bases de
données SQL. Les données sont extraites de la base et écrites sur le disque
@@ -39,26 +38,28 @@ derniers mois (tout ceci est paramétrable dans le script
Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de
l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
-
En tant que `root` sur le serveur, faire:
-```
+
+```bash
# su postgres
# cd
# crontab -e
```
+
et ajouter:
-```
+
+```bash
15 * * * * /opt/scodoc/tools/backups/backup_db9 SCODOC
```
-(ScoDoc9 utilise par défaut la base nommée `SCODOC`, adaptez si vous l'avez configuré sur une autre base).
+(ScoDoc9 utilise par défaut la base nommée `SCODOC`, adaptez si vous l'avez
+configuré sur une autre base).
+## En cas de problème: restaurer la base à partir d'une sauvegarde
-## En cas de problème: restaurer la base à partir d'une sauvegarde
- Attention, certaines informations sont stockées dans des fichiers
-et non dans la base de données: configuration du logiciel, photos des étudiants.
-Ce paragraphe ne traite que de la restauration de la base de données.
+🚸 Attention, certaines informations sont stockées dans des fichiers et non dans
+la base de données: configuration du logiciel, photos des étudiants. Ce
+paragraphe ne traite que de la restauration de la base de données.
Rappel: en ScoDoc 9, il n'y a qu'une seule base de donnée SQL, nommée par défaut
`SCODOC`. Cette base contient les données des départements et la définition des
@@ -70,23 +71,23 @@ comptes utilisateurs.
`/var/lib/postgresql/SCODOC-BACKUPS`où `XXX` est concerné. Utiliser par
exemple `ls -lrt` pour visualiser les sauvegardes triées par date.
- 1. Copier le fichier de sauvegarde choisi et le décomprimer; par exemple:
+ 1. Copier le fichier de sauvegarde choisi et le décomprimer; par exemple:
-```
+```bash
cp /var/lib/postgresql/SCODOC-BACKUPS/backup.hourly/2021-09-17T19\:15/SCODOC_pgdump.gz /tmp
gunzip /tmp/SCODOC_pgdump.gz
```
-
- 3. Recharger la base complète. Attention, cette opération effacera et
- remplacera) le contenu de la base de données actuelle...
-```
+
+ 1. Recharger la base complète. 🚸 Attention, *cette opération effacera et
+ remplacera le contenu de la base de données actuelle !*
+
+```bash
# en tant que root...
systemctl stop scodoc9 # arret du serveur
su - scodoc
dropdb SCODOC # <<< votre base production
createdb -E UTF-8 SCODOC
-pg_restore -d SCODOC /tmp/SCODOC_pgdump.gz # (nom du fichier dump)
+pg_restore -d SCODOC /tmp/SCODOC_pgdump # (nom du fichier dump)
source venv/bin/activate
flask db upgrade # nécessaire seulement si sauvegarde ancienne
flask clear-cache
@@ -96,12 +97,15 @@ systemctl start scodoc9 # relance ScoDoc
```
## Déplacement de toute une installation
+
Les scripts ci-dessus ne se chargent que de la base de données SQL.
Pour créer une sauvegarde complète d'une installation, vous pouvez utiliser le
script
+```bash
tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
+```
Ce script va générer une archive (`tar`, format `.tgz`) contenant non seulement
la base de données SQL mais aussi tous les fichiers générés par votre ScoDoc:
@@ -117,10 +121,10 @@ Pour restaurer ce type de sauvegarde, sur une autre machine (ou plus tard sur la
même), transférer le fichier généré (`/tmp/sauvegarde-scodoc.tgz`) dans
l'exemple ci-dessus) et utiliser
+```bash
tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
+```
(Note: la sauvegarde s'effectue comme utilisateur `scodoc`, en revanche le
rechargement doit se faire en tant que `root` car il faut évidemment arrêter et
relancer le service).
-
-