Outils pour utilisateurs

Outils du site


amipo_documentation_backup

Ceci est une ancienne révision du document !


Documentation des Backup AMIPO

Choses backupés

  • Le schéma de la base de données
  • Les données de la base de données
  • Les données hors base (le système de fichier /var/nextcloud/data)
  • Les fichiers exécutables de l'application nextcloud (/var/www/nuage)
  • Les fichiers de logs du nextcloud de prod (/var/log/nuage-prod.log*)
  • Les fichiers de config nginx (/etc/nginx)

Scripts de backup

Les scripts de backups sont entreposés ici : https://framagit.org/amipo/amipo-admin-code/tree/master/backups Actuellement il y a 2 scripts :

  • backup_nextcloud.sh : effectue le backup de l'instance nextcloud de prod
  • restore_nextcloud_maintenance.sh : s'assure que l'instance nextcloud de prod n'est plus en mode maintenance

Principes du backup

  • Création d'un nouveau dossier pour recueillir les fichiers à sauvegardées
  • Mise en mode maintenance de l'instance Nextcloud (mode maintenance ON)
  • Création du dump de la BD (schéma et data)
  • Copie du système de fichier "data" de Nextcloud
  • Remise en route de l'instance Nextcloud (mode maintenance OFF)
  • Copie des autres systèmes de fichiers (exécutables, logs, config, ...)
  • Création d'une archive compréssée au format tar.gz à partir du nouveau dossier créé à l'étape 1.
  • Suppression du dossier créé à l'étape 1.
  • Vérification et Suppression des anciennes archives vieilles de plus de 7 jours.

Sécuritées

  • Actuellement, la suppression des archives n'est effectué que pour les archives vieilles de plus de 7 jours, et si il existe au moins 7 fichiers présent dans le dossier contenant les archives.
  • Le script de backup ne plante pas en cas d'erreur de copie de fichiers pour tenter de backup le plus possibles de données. Pour chaque plantage durant une copie, un compteur est incrémenté pour indiquer le nombre d'erreur de copie dans le nom de l'archive et ainsi indiquer la "qualité" du backup.

Automatisation du Backup

Todo Dump

  • Changer le schema de nextcloud (ne pas laisser dans public)
  • Ne dumper que le schema nextcloud
  • Dumper le schema au format text et les data au format custom ?
  • Changer le tar : faire un cd avant le tar pour ne pas archiver les chemins absolus
set search_path to public,nextcloud;
alter schema public rename to nextcloud;
create schema public;
alter role nextcloud set search_path to nextcloud;
pg_dump --username=nextcloud_backup -d nextcloud -h localhost --schema-only -n nextcloud | gzip > $BACKUP_DIR/schema-nextcloud-dump.psql.gz
pg_dump --username=nextcloud_backup -d nextcloud -h localhost --data-only -n nextcloud -Fc > $BACKUP_DIR/data-nextcloud-dump.custom

Restauration d'un backup

Création de la BD dans lequel sera effectué la restauration

create role restore_user;
alter role restore_user encrypted password 'foo';
alter role restore_user login;
 
alter role restore_user set search_path to nextcloud;
create database restore_nextcloud;
\c restore_nextcloud;
create schema nextcloud;
grant usage on schema nextcloud to restore_user;
grant all on all tables in schema nextcloud to restore_user;
grant all on all sequences in schema nextcloud to restore_user;

Restauration de la BD

sudo mkdir /var/restore
sudo chown max:max /var/restore
cd /var/restore
sudo chown -R max:max *
sudo tar -xzf /backups/nextcloud/latest
sudo chown www-data:www-data /var/restore/.../nextcloud/data
psql -U restore_user -h localhost -d restore_nextcloud -c "show search_path;"
 
zcat schema-nextcloud-dump.psql.gz | sudo -u postgres -s psql -d restore_nextcloud
sudo -u postgres -s pg_restore -d restore_nextcloud data-nextcloud-dump.custom

Duplication de l'app nextcloud

sudo cp -ar /var/www/nuage/ /var/www/restore_nuage

Edition du fichier /var/www/restore_nuage/config/config.php pour se connecter la BD:

'datadirectory' => '/var/restore/.../nextcloud/data',
'overwrite.cli.url' => 'https://amipo.fr/restore_nuage',
'dbname' => 'restore_nextcloud',
'dbuser' => 'restore_nextcloud',
'dbpassword' => '***',

Ajouter un cronjob

sudo mkdir -p /var/log/restore_nextcloud/
sudo chown root:www-data /var/log/restore_nextcloud/
sudo chmod 0660 /var/log/restore_nextcloud/
sudo crontab -e -u www-data
*/5  *  *  *  * php -f /var/www/restore_nuage/cron.php 2>&1 /var/log/restore_nextcloud/cron.log

Config Nginx

sudo cp /etc/nginc/nextcloud.conf /etc/nginc/restore_nextcloud.conf Remplacement de /nuage par /restore_nuage dans ce nouveau fichier. Ajout dans /etc/nginx/sites-available/amipo.fr de include /etc/nginx/restore-nextcloud.conf;

amipo_documentation_backup.1580135063.txt.gz · Dernière modification : 2020/01/27 14:24 de bigMax