forked from ScoDoc/ScoDoc
wip
This commit is contained in:
parent
aeb0d67f38
commit
8abf2ea4ee
|
@ -24,25 +24,37 @@ usage() {
|
|||
exit 1
|
||||
}
|
||||
|
||||
if (($# < 1 || $# > 2))
|
||||
then
|
||||
usage
|
||||
elif [ $# -eq 2 -a $1 != '--keep-env' -a $2 != '--keep-env' ] ; then
|
||||
usage
|
||||
elif [ $# -eq 1 ] ; then
|
||||
echo "restauration des données et de la configuration originale (production)"
|
||||
SRC=$1
|
||||
DB_DEST="SCODOC"
|
||||
else
|
||||
echo "restauration des données dans la configuration actuelle"
|
||||
DB_CURRENT=$(su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask scodoc-database -n)")
|
||||
DB_DEST="$DB_CURRENT"
|
||||
KEEP=1
|
||||
if [ $1 = '--keep-env' ]; then
|
||||
# détection des options -> ($SRC, $KEEP_ENV) sinon usage
|
||||
# 1 ou 2 parametres et si 2, l un des deux doit être -keep-env
|
||||
if [ $# -eq 1 ]; then
|
||||
KEEP=""
|
||||
SRC="$1"
|
||||
elif [ $# -eq 2 ]; then
|
||||
if [ "$1" = "--keep-env" ]; then
|
||||
KEEP=1
|
||||
SRC=$2
|
||||
elif [ "$2" = "--keep-env" ]; then
|
||||
KEEP=1
|
||||
SRC="$1"
|
||||
else
|
||||
SRC=$1
|
||||
usage
|
||||
fi
|
||||
else
|
||||
usage
|
||||
fi
|
||||
|
||||
if [ ! -e $SRC ]; then
|
||||
echo "le fichier de restauration ($SRC) n'existe pas: Abandon de la restauration"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $KEEP ]; then
|
||||
echo "restauration des données tout en conservant la configuration actuelle"
|
||||
DB_CURRENT=$(su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask scodoc-database -n)" "$SCODOC_USER")
|
||||
DB_DEST="$DB_CURRENT"
|
||||
else
|
||||
echo "restauration des données et de la configuration originale (de production)"
|
||||
DB_DEST="SCODOC"
|
||||
fi
|
||||
DB_DUMP="${SCODOC_VAR_DIR}"/SCODOC.dump
|
||||
|
||||
|
@ -55,22 +67,27 @@ echo "Attention: TOUTES LES DONNEES DE CE SCODOC SERONT REMPLACEES !"
|
|||
echo "Notamment, tous les utilisateurs et departements existants seront effaces !"
|
||||
echo
|
||||
echo "La base SQL $DB_CURRENT sera effacée et remplacée !!!"
|
||||
if [ ! -z $KEEP ]; then
|
||||
echo -n "Assurez-vous d\'avoir arrété le serveur scodoc."
|
||||
fi
|
||||
SCODOC_VAR_DIR_OLD="${SCODOC_VAR_DIR}".old
|
||||
if [ -e "$SCODOC_VAR_DIR" ] && [ -e "$SCODOC_VAR_DIR_OLD" ]; then
|
||||
old_date=$(stat --printf %z $SCODOC_VAR_DIR_OLD)
|
||||
echo "un ancien répertoire de sauvegarde $SCODOC_VAR_DIR_OLD du $old_date va être écrasé"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -n "Voulez vous poursuivre cette operation ? (y/n) [n]"
|
||||
echo -n "Voulez vous poursuivre cette opération ? (y/n) [n]"
|
||||
read -r ans
|
||||
if [ ! "$(norm_ans "$ans")" = 'Y' ]
|
||||
then
|
||||
echo "Annulation"
|
||||
exit 1
|
||||
if [ ! "$(norm_ans "$ans")" = 'Y' ]; then
|
||||
echo "Annulation par l\'utilisateur"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# -- Stop ScoDoc
|
||||
if [ $KEEP -ne 1 ]; then
|
||||
echo "Arrêt de scodoc9..."
|
||||
systemctl stop scodoc9
|
||||
else
|
||||
echo -n "Assurez-vous d'avoir arrété le serveur scodoc (validez pour continuer)"
|
||||
read ans
|
||||
fi
|
||||
|
||||
# Clear caches
|
||||
|
@ -78,11 +95,15 @@ echo "Purge des caches..."
|
|||
su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask clear-cache)" "$SCODOC_USER" || die "Erreur purge cache scodoc9"
|
||||
|
||||
# Déplace scodoc-data s'il existe
|
||||
if [ -e "$SCODOC_VAR_DIR" ]
|
||||
then
|
||||
echo "$SCODOC_VAR_DIR existe: le renomme en .old"
|
||||
mv "$SCODOC_VAR_DIR" "$SCODOC_VAR_DIR".old || die "Erreur renommage scodoc-data"
|
||||
if [ -e "$SCODOC_VAR_DIR" ]; then
|
||||
if [ -e "$SCODOC_VAR_DIR_OLD" ]; then
|
||||
echo "$SCODOC_VAR_DIR_OLD existe: le supprime"
|
||||
rm -rf $SCODCO_VAR_DIR_OLD || die "Erreur effacement d\'une ancienne sauvegarde"
|
||||
fi
|
||||
echo "$SCODOC_VAR_DIR existe: le renomme en $SCODOC_VAR_DIR_OLD"
|
||||
mv "$SCODOC_VAR_DIR" "$SCODOC_VAR_DIR_OLD" || die "Erreur renommage scodoc-data"
|
||||
fi
|
||||
mkdir "$SCODOC_VAR_DIR"
|
||||
|
||||
# -- Ouverture archive
|
||||
echo "Ouverture archive $SRC..."
|
||||
|
@ -92,25 +113,25 @@ echo "Ouverture archive $SRC..."
|
|||
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
|
||||
# --- Reconstruction de la base cible ($DB_DEST)
|
||||
nb=$(su -c "psql -l" "$SCODOC_USER" | awk '{print $1}' | grep -c -x "$DB_DEST")
|
||||
if [ "$nb" -gt 0 ]
|
||||
then
|
||||
if [ "$nb" -gt 0 ]; then
|
||||
echo "Suppression de la base $DB_DEST..."
|
||||
su -c "dropdb $DB_DEST" "$SCODOC_USER" || die "Erreur destruction db"
|
||||
fi
|
||||
su -c "createdb $DB_DEST" "$SCODOC_USER" || die "Erreur création db"
|
||||
|
||||
if [ ! -z $KEEP_ENV ] ; then
|
||||
if [ ! -z $KEEP_ENV ]; then
|
||||
echo "conservation de la configuration actuelle"
|
||||
cp "$SCODOC_VAR_DIR".old/.env "$SCODOC_VAR_DIR"/.env
|
||||
mv "$SCODOC_VAR_DIR"/.env "$SCODOC_VAR_DIR"/.env.initial
|
||||
cp "$SCODOC_VAR_DIR_OLD"/.env "$SCODOC_VAR_DIR"/.env
|
||||
echo "récupération des données..."
|
||||
su -c "pg_restore -f - $DB_DUMP | psql -q $DB_DEST" "$SCODOC_USER" >/dev/null || die "Erreur chargement/renommage de la base SQL"
|
||||
su -c "(cd $SCODOC_DIR && source venv/bin/activate && flask db upgrade)" "$SCODOC_USER"
|
||||
echo "redémarrez scodoc selon votre configuration"
|
||||
else
|
||||
# -- Apply migrations if needed (only on "production" database, = SCODOC sauf config particulière)
|
||||
echo "restauration environnement de production"
|
||||
echo "restauration environnement de production (initial)"
|
||||
echo "Chargement de la base SQL..."
|
||||
su -c "pg_restore -d $DB_DEST $DB_DUMP" "$SCODOC_USER" || die "Erreur chargement de la base SQL"
|
||||
export FLASK_ENV="production" # peut-être pas utile? : .env a été recopié
|
||||
|
|
Loading…
Reference in New Issue