From efe997fe55f7065924278b10bc7cc4aff0bd99e3 Mon Sep 17 00:00:00 2001 From: Jean-Marie PLACE Date: Wed, 5 Jan 2022 06:09:55 +0100 Subject: [PATCH 1/2] check scodoc-data.old ; correction bug --keep-env --- tools/restore_scodoc9_data.sh | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/tools/restore_scodoc9_data.sh b/tools/restore_scodoc9_data.sh index 43624ba8a..50ca92b1a 100755 --- a/tools/restore_scodoc9_data.sh +++ b/tools/restore_scodoc9_data.sh @@ -24,6 +24,11 @@ usage() { exit 1 } +# analyse de la ligne de commande +# calcule: +# SRC = fichier source de la restauration +# DB_DEST = base de données destination +# KEEP_ENV = vide si restauration à l'identique (i.e. production) if (($# < 1 || $# > 2)) then usage @@ -37,7 +42,7 @@ 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 + KEEP_ENV=Y if [ $1 = '--keep-env' ]; then SRC=$2 else @@ -56,21 +61,34 @@ echo "Notamment, tous les utilisateurs et departements existants seront effaces echo echo "La base SQL $DB_CURRENT sera effacée et remplacée !!!" echo -echo -n "Voulez vous poursuivre cette operation ? (y/n) [n]" +# Préparation si une copie 'antique' doit être effacée, demander confirmation, puis effacer +SCODOC_VAR_OLD=${SCODOC_VAR_DIR}.old +if [ -e "$SCODOC_VAR_DIR" ] && [ -e "$SCODOC_VAR_OLD" ] +then + echo "une ancienne sauvegarde ('$SCODOC_VAR_OLD' en date du $(stat -c %w $SCODOC_VAR_OLD) ) va être effacée." + echo +fi +if [ ! -z $KEEP_ENV ] +then + echo -n "restauration des données sans changement de configuration: Assurez-vous d'avoir arrété le serveur scodoc." + echo +fi + +echo -n "Voulez vous poursuivre la restauration ? (y/n) [n]" read -r ans if [ ! "$(norm_ans "$ans")" = 'Y' ] then - echo "Annulation" + echo "Annulation de la restauration par l\'utilisateur" exit 1 fi +rm -rf $SCODOC_VAR_OLD || die "Erreur suppression $SCODOC_VAR_OLD" + # -- Stop ScoDoc -if [ $KEEP -ne 1 ]; then +if [ -z $KEEP_ENV ] +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 @@ -103,7 +121,7 @@ su -c "createdb $DB_DEST" "$SCODOC_USER" || die "Erreur création db" if [ ! -z $KEEP_ENV ] ; then echo "conservation de la configuration actuelle" - cp "$SCODOC_VAR_DIR".old/.env "$SCODOC_VAR_DIR"/.env + cp "$SCODOC_VAR_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" @@ -119,5 +137,4 @@ else systemctl start scodoc9 fi - echo "Terminé." From db9acb67ddaa4f23dbe79d9458d156be30621547 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Wed, 5 Jan 2022 16:45:55 +0100 Subject: [PATCH 2/2] =?UTF-8?q?d=C3=A9tails=20bash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/restore_scodoc9_data.sh | 41 +++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/tools/restore_scodoc9_data.sh b/tools/restore_scodoc9_data.sh index 50ca92b1a..87f95a796 100755 --- a/tools/restore_scodoc9_data.sh +++ b/tools/restore_scodoc9_data.sh @@ -32,32 +32,35 @@ usage() { if (($# < 1 || $# > 2)) then usage -elif [ $# -eq 2 -a $1 != '--keep-env' -a $2 != '--keep-env' ] ; then +elif [ $# -eq 2 ] && [ "$1" != "--keep-env" ] && [ "$2" != "--keep-env" ] +then usage -elif [ $# -eq 1 ] ; then +elif [ $# -eq 1 ] +then echo "restauration des données et de la configuration originale (production)" - SRC=$1 + 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_ENV=Y - if [ $1 = '--keep-env' ]; then - SRC=$2 + KEEP_ENV="Y" + if [ "$1" = "--keep-env" ] + then + SRC="$2" else - SRC=$1 + SRC="$1" fi fi DB_DUMP="${SCODOC_VAR_DIR}"/SCODOC.dump # Safety check -echo "Ce script va remplacer les donnees de votre installation ScoDoc par celles" +echo "Ce script va remplacer les données de votre installation ScoDoc par celles" echo "enregistrées dans le fichier fourni." -echo "Ce fichier doit avoir ete cree par le script save_scodoc9_data.sh." +echo "Ce fichier doit avoir été créé par le script save_scodoc9_data.sh." echo echo "Attention: TOUTES LES DONNEES DE CE SCODOC SERONT REMPLACEES !" -echo "Notamment, tous les utilisateurs et departements existants seront effaces !" +echo "Notamment, tous les utilisateurs et départements existants seront effacés !" echo echo "La base SQL $DB_CURRENT sera effacée et remplacée !!!" echo @@ -65,27 +68,27 @@ echo SCODOC_VAR_OLD=${SCODOC_VAR_DIR}.old if [ -e "$SCODOC_VAR_DIR" ] && [ -e "$SCODOC_VAR_OLD" ] then - echo "une ancienne sauvegarde ('$SCODOC_VAR_OLD' en date du $(stat -c %w $SCODOC_VAR_OLD) ) va être effacée." + echo "Une ancienne sauvegarde (\"$SCODOC_VAR_OLD\" en date du $(stat -c %w "$SCODOC_VAR_OLD") ) va être effacée." echo fi -if [ ! -z $KEEP_ENV ] +if [ -n "$KEEP_ENV" ] then - echo -n "restauration des données sans changement de configuration: Assurez-vous d'avoir arrété le serveur scodoc." + echo -n "Restauration des données sans changement de configuration: Assurez-vous d'avoir arrêté le serveur scodoc." echo fi -echo -n "Voulez vous poursuivre la restauration ? (y/n) [n]" +echo -n "Voulez-vous poursuivre la restauration ? (y/n) [n]" read -r ans -if [ ! "$(norm_ans "$ans")" = 'Y' ] +if [ ! "$(norm_ans "$ans")" = "Y" ] then echo "Annulation de la restauration par l\'utilisateur" exit 1 fi -rm -rf $SCODOC_VAR_OLD || die "Erreur suppression $SCODOC_VAR_OLD" +rm -rf "$SCODOC_VAR_OLD" || die "Erreur suppression $SCODOC_VAR_OLD" # -- Stop ScoDoc -if [ -z $KEEP_ENV ] +if [ -z "$KEEP_ENV" ] then echo "Arrêt de scodoc9..." systemctl stop scodoc9 @@ -104,7 +107,7 @@ fi # -- Ouverture archive echo "Ouverture archive $SRC..." -(cd $(dirname "$SCODOC_VAR_DIR"); tar xfz "$SRC") || die "Error opening archive" +(cd "$(dirname "$SCODOC_VAR_DIR")"; tar xfz "$SRC") || die "Error opening archive" # -- Ckeck/fix owner echo "Vérification du propriétaire..." @@ -121,7 +124,7 @@ su -c "createdb $DB_DEST" "$SCODOC_USER" || die "Erreur création db" if [ ! -z $KEEP_ENV ] ; then echo "conservation de la configuration actuelle" - cp "$SCODOC_VAR_OLD"/.env "$SCODOC_VAR_DIR"/.env + cp -p "$SCODOC_VAR_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"