Outils pour utilisateurs

Outils du site


autohebergement:sauvegardes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
autohebergement:sauvegardes [2020/03/21 10:24]
eorn création du vrai contenu
autohebergement:sauvegardes [2021/08/16 14:13] (Version actuelle)
Ligne 1: Ligne 1:
 ===== Sauvegardes ===== ===== Sauvegardes =====
 +**Une version plus à jour, avec des sauvegardes vraiment distantes, est disponible ici :​[[autohebergement:​sauvegardes_chez_les_copain_e_s|Sauvegardes chez les copain·e·s]].**
 +
 J'​utilise BorgBackup et Borgmatic pour m'​occuper de mes sauvegardes. J'​utilise BorgBackup et Borgmatic pour m'​occuper de mes sauvegardes.
  
Ligne 93: Ligne 95:
 === Correctement sauvegarder des bases de données === === Correctement sauvegarder des bases de données ===
 Il faut pour cela utiliser les ''​hooks''​ dans le fichier de configuration. Il faut pour cela utiliser les ''​hooks''​ dans le fichier de configuration.
 +J'ai écrit un petit script qui va *dumper* les bases de données, je donne un exemple plus bas.
 +
 +<​file>​
 +hooks:
 +    before_backup:​
 +        - echo "​Starting a backup."​
 +        - /​srv/​config/​borg/​scripts/​dump_database.sh -t postgres -s etherpad -c dbetherpad
 +        - /​srv/​config/​borg/​scripts/​dump_database.sh -t postgres -s freshrss -c dbfreshrss
 +...
 +</​file>​
 +
 +Et le script ''​dump_database.sh''​ :
 +<​file>​
 +#!/bin/bash
 +
 +# Default values
 +TYPE="​postgres"​
 +SERVICE=""​
 +CONTAINER=""​
 +
 +while getopts "​t:​s:​c:"​ opt
 +do
 +        case "​$opt"​ in
 +                t) TYPE="​$OPTARG";;​
 +                s) SERVICE="​$OPTARG";;​
 +                c) CONTAINER="​$OPTARG";;​
 +        esac
 +done
 +
 +###
 +# Preparation
 +FILENAME="​${SERVICE}_$(date +"​%Y%m%d-%H%M"​).sql"​
 +mkdir -p /​srv/​apps/​$SERVICE/​dump
 +
 +# Load env file (user, db name)
 +source /​srv/​apps/​$SERVICE/​.env
 +cd /​srv/​apps/​$SERVICE/ ​       ​
 +
 +# Dump (within the container)
 +if [ $TYPE == "​postgres"​ ]
 +then
 +        docker-compose \
 +                -f /​srv/​apps/​$SERVICE/​docker-compose.yml\
 +                exec $CONTAINER\
 +                pg_dump -U $POSTGRES_USER -d $POSTGRES_DB -f /$FILENAME
 +elif [ $TYPE == "​mysql"​ ]
 +then
 +        docker-compose \
 +                -f /​srv/​apps/​$SERVICE/​docker-compose.yml\
 +                exec $CONTAINER\
 +                mysqldump -u $MYSQL_USER --databases $MYSQL_DATABASE -p${MYSQL_PASSWORD} -r /$FILENAME
 +fi
 +
 +
 +# Copy the dump file to host
 +docker cp ${SERVICE}_${CONTAINER}_1:/​$FILENAME /​srv/​apps/​$SERVICE/​dump
 +
 +
 +# Remove the dump file in the container
 +docker-compose \
 +        -f /​srv/​apps/​$SERVICE/​docker-compose.yml\
 +        exec $CONTAINER rm /$FILENAME
 +</​file>​
 +
 +
 +=== Vérifier que tout se passe bien ===
 +
  
  
autohebergement/sauvegardes.1584786249.txt.gz · Dernière modification: 2021/08/16 14:13 (modification externe)