avant tests

This commit is contained in:
Jean-Marie Place 2021-10-04 14:20:53 +02:00 committed by Jean-Marie Place
parent a455a61910
commit 30d0553519
1 changed files with 30 additions and 15 deletions

View File

@ -15,18 +15,28 @@ source "$SCRIPT_DIR/utils.sh"
# Ce script doit tourner comme "root"
check_uid_root "$0"
# Usage
if [ ! $# -eq 2 ]
if (($# < 1 || $# > 2))
then
echo "Usage: $0 archive dbname"
echo "Exemple: $0 /tmp/mon-scodoc.tgz SCODOC"
echo "Usage: $0 archive [--keep_env]"
echo "Exemple: $0 /tmp/mon-scodoc.tgz"
echo "sans --keep_env restaure la sauvegarde complète (données et configuration)"
echo "avec --keep_env restaure les données sauvegardées dans la base en conservant la configuration courante"
exit 1
fi
# Hypothèse: la base sauvegardée s'appelle SCODOC (dans SCODOC.dump)
SRC=$1
DBNAME=$2
KEEP_ENV="$2"
DB_DUMP="${SCODOC_VAR_DIR}"/SCODOC.dump
DB_CURRENT=$(su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask scodoc-database -n)")
# computes target database name (SCODOC if production else current database)
if [ -z "$KEEP_ENV" ] ; then # pas d'option --keepenv
DB_DEST="SCODOC"
elif [ "$2" = "--keep_env" ] ; then
DB_DEST="$DB_DB_CURRENT"
fi
# Safety check
echo "Ce script va remplacer les donnees de votre installation ScoDoc par celles"
@ -70,20 +80,25 @@ echo "Vérification du propriétaire..."
chown -R "${SCODOC_USER}:${SCODOC_GROUP}" "${SCODOC_VAR_DIR}" || die "Error chowning ${SCODOC_VAR_DIR}"
# --- La base SQL: nommée $(db_name).dump
nb=$(su -c "psql -l" "$SCODOC_USER" | awk '{print $1}' | grep -c -e '^'"$DBNAME"'$')
if [ "$nb" -gt 0 ]
nb=$(su -c "psql -l" "$SCODOC_USER" | awk '{print $1}' | grep -c -x "$DB_DEST")
if [ "$nb" -gt 0 ]
then
echo "Suppression de la base $DBNAME..."
su -c "dropdb $DBNAME" "$SCODOC_USER" || die "Erreur destruction db"
echo "Suppression de la base $DB_DEST..."
su -c "dropdb $DB_DEST" "$SCODOC_USER" || die "Erreur destruction db"
fi
su -c "createdb $DBNAME" "$SCODOC_USER" || die "Erreur création db"
su -c "createdb $DB_DEST" "$SCODOC_USER" || die "Erreur création db"
echo "Chargement de la base SQL..."
su -c "pg_restore -d $DBNAME ${SCODOC_VAR_DIR}/SCODOC.dump" "$SCODOC_USER" || die "Erreur chargement de la base SQL"
# -- Apply migrations if needed (only on "production" databse, = SCODOC sauf config particulière)
export FLASK_ENV="production"
su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask db upgrade)" "$SCODOC_USER"
if $KEEP_ENV ; then
su -c "pg_restore -f - $DB_DUMP | psql -q $DB_DEST" "$SCODOC_USER" >/dev/null || die "Erreur chargement/renommage de la base SQL"
cp "$SCODOC_VAR_DIR".old/.env "$SCODOC_VAR_DIR"/.env
su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask db upgrade)" "$SCODOC_USER"
else
su -c "pg_restore -d $DB_DEST $DB_DUMP "$SCODOC_USER" || die "Erreur chargement de la base SQL"
# -- Apply migrations if needed (only on "production" database, = SCODOC sauf config particulière)
export FLASK_ENV="production"
su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask db upgrade)" "$SCODOC_USER"
fi
# -- Start ScoDoc
systemctl start scodoc9