# Backup

Les backups sont assurés par des scripts shell exécutés via cron.

# Source des scripts

Les scripts sont maintenus dans ce dépôt: [[https://github.com/karthanistyr/matrix-maintenance-scripts|karthanistyr/matrix-maintenance-scripts]]

# Description

# backup-redux.sh

Ceci est le script principal, qui s'occupe de créer les archives de backup et les dépose aux endroits prévus.

La conception du script prévoit que chaque cycle de sauvegarde, une copie est placée localement sur le système de fichier du serveur matrix lui-même, et une autre copie est envoyée sur un serveur distant. Il n'y a pas, pour le moment, de mode alternatif.

Deux dossiers sont compressés:

  • Les données et fichiers de configuration (y compris les certificats et clés privées) du serveur matrix ''synapse''
  • L'intégralité des fichiers de données de la base ''postgresql'' qui soutient le serveur matrix.

Ces deux archives sont placées dans un dossier portant la date et heure exactes du moment où le script s'est exécuté.

Ce dossier est ensuite placé:

  • Dans le dossier ''/home/save/matrix'' sur le serveur local
  • Dans le dossier ''/home/save/matrix'' du serveur distant (il s'agit pour le moment de ''web1.draak.fr'')

# prune-old-backups.sh

Ce script est responsable de garder sous contrôle l'accumulation de sauvegardes effectuées par ''backup-redux.sh''.

Il détectera les dossiers dont le nom commence par ''matrix-backup'' et les classera par ordre alphabétique. Comme les dossiers portent la date et heure à laquelle ils ont été créés, ceci a pour effet corrollaire de les classer par ordre de création.

Le script supprimera tout sauf les ''n'' derniers dossiers de sauvegarde, assurant ainsi que la consommation de l'espace disque reste sous un niveau acceptable.

# elect-weekly-backup.sh

Ce script sélectionne le dernier dossier de sauvegarde créé en date et le copie dans un dossier "weekly", assurant ainsi une sauvegarde secondaire. L'intention est de faire s'exécuter ce script de manière hebdomadaire, pour supplémenter la sauvegarde quotidienne.

# Configuration

Les scripts sont configurés pour exécution dans ''cron'' sur ''save1.draak.fr'' et ''web1.draak.fr''.

# save1.draak.fr (serveur matrix)

0 2 * * * /home/save/matrix/backup-redux.sh -o save -d /home/matrix/synapse-data -b /home/matrix/postgres-data -s /home/save/staging -l /home/save/matrix -r save@web1.draak.fr:matrix >> /home/save/logs/matrix-backup.log

0 4 * * * /home/save/matrix/prune-old-backups.sh -d /home/save/matrix -n 3 >> /home/save/logs/matrix-purge-daily.log

0 12 * * 7 /home/save/matrix/elect-weekly-backup.sh -d /home/save/matrix -w /home/save/matrix-weekly >> /home/save/logs/matrix-backup-weekly.log

0 13 * * 7 /home/save/matrix/prune-old-backups.sh -d /home/save/matrix-weekly -n 2 >> /home/save/logs/matrix-purge-weekly.log

# web1.draak.fr (sauvegarde distante)

0 4 * * * /home/save/matrix/prune-old-backups.sh -d /home/save/matrix -n 1 >> /home/save/logs/matrix-purge-daily.log