Skip to content
Snippets Groups Projects
Select Git revision
  • 4b3f23cdcd4b3148d7d3ca1e32b75d7add3cc4ed
  • main default protected
2 results

chat.jsp

Blame
  • restore_scodoc9_data.sh 2.62 KiB
    #!/bin/bash
    
    #
    # ScoDoc:  restore data (saved by save_scodoc9_data) into current install
    # 
    #  Utile pour migrer ScoDoc 9 d'un serveur a un autre
    #  A executer en tant que root sur le nouveau serveur
    #
    # E. Viennet, Sept 2021
    #
    SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
    source "$SCRIPT_DIR/config.sh"
    source "$SCRIPT_DIR/utils.sh"
    
    # Ce script doit tourner comme "root"
    check_uid_root "$0"
    
    
    # Usage
    if [ ! $# -eq 2 ]
    then
      echo "Usage: $0 archive dbname"
      echo "Exemple: $0 /tmp/mon-scodoc.tgz SCODOC"
      exit 1
    fi
    
    SRC=$1
    DBNAME=$2
    
    
    # Safety check
    echo "Ce script va remplacer les donnees de votre installation ScoDoc par celles"
    echo "enregistrees dans le fichier fourni."
    echo "Ce fichier doit avoir ete cree 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
    echo "La base SQL $DBNAME sera effacée et remplacée !!!"
    echo 
    echo -n "Voulez vous poursuivre cette operation ? (y/n) [n]"
    read -r ans
    if [ ! "$(norm_ans "$ans")" = 'Y' ]
    then
       echo "Annulation"
       exit 1
    fi
    
    # -- Stop ScoDoc
    echo "Arrêt de scodoc9..."
    systemctl stop scodoc9
    
    # Clear caches
    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"
    fi
    
    # -- Ouverture archive
    echo "Ouverture archive $SRC..."
    (cd $(dirname "$SCODOC_VAR_DIR"); tar xfz "$SRC") || die "Error opening archive"
    
    # -- Ckeck/fix owner
    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 ] 
    then
      echo "Suppression de la base $DBNAME..."
      su -c "dropdb $DBNAME" "$SCODOC_USER" || die "Erreur destruction db"
    fi
    su -c "createdb $DBNAME" "$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"
    
    # -- Start ScoDoc 
    systemctl start scodoc9
    
    echo "Terminé."