#!/bin/bash # # ScoDoc: restore data (saved by save_scodoc7_data) # into current server # # Utile pour migrer de ScoDoc 7 à ScoDoc 9, d'un serveur à un autre # A executer en tant que root sur le nouveau serveur # Ce script va créer les base postgresql "scodoc7" (SCOUSERS, SCODEPTs...) # afin que ScoDoc 9 puisse les importer avec ses scripts de migration. # Les données (photos, etc) sont pas touchées et seront importées par # la migration. # # E. Viennet, Sept 2011, Nov 2013, Mar 2017, Aug 2020, Jul 2021, Août 21 # # Le répertoire de ce script: SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" source "$SCRIPT_DIR/config.sh" source "$SCRIPT_DIR/utils.sh" if [ "$(id -nu)" != "$SCODOC_USER" ] then echo "Erreur: le script $0 doit être lancé par l'utilisateur $SCODOC_USER" fi # Usage if [ ! $# -eq 1 ] then echo "Usage: $0 directory_or_archive" exit 1 fi SRC=$1 if [ "${SRC:0:1}" != "/" ] then echo "Usage: $0 directory_or_archive" echo "Erreur: utiliser un chemin absolu (commencant par /)" exit 1 fi # Safety check echo "Ce script recharge les donnees de votre installation ScoDoc 7" echo "sur ce serveur pour migration vers ScoDoc 9." echo "Ce fichier doit avoir ete cree par le script save_scodoc7_data.sh, sur une machine ScoDoc 7." 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 SCOBASES=$(psql -l | grep SCO | grep -v "$SCODOC_DB_PROD" | grep -v "$SCODOC_DB_DEV" | grep -v "$SCODOC_DB_TEST") if [ -n "$SCOBASES" ] then echo "Attention: vous avez apparemment déjà des bases ScoDoc7 chargées" echo "$SCOBASES" echo echo -n "poursuivre quand même ? (y/n) [n]" read -r ans if [ ! "$(norm_ans "$ans")" = 'Y' ] then echo "Annulation" exit 1 fi fi # Source directory if [ "${SRC##*.}" = 'tgz' ] then echo "Opening tgz archive..." tmp=$(mktemp -d) chmod a+rx "$tmp" cd "$tmp" || terminate "directory error" tar xfz "$SRC" SRC=$(ls -1d "$tmp"/*) fi echo "Source is $SRC" echo "L'opération peut durer plusieurs minutes, suivant la taille de vos bases." echo "Vous allez probablement voir s'afficher de nombreux messages : " echo "pg_restore: attention : la restauration des tables avec WITH OIDS n'est plus supportée" echo echo "ce n'est pas grave !" echo -n "valider pour continuer" read -r ans # Load postgresql dumps for f in "$SRC"/SCO*.dump do echo "Loading postgres database from $f" pg_restore --create -d SCODOC --no-owner "$f" # le pg_restore a parfois des erreurs sans gravités... # voir https://www.postgresql.org/message-id/20849.1541638465%40sss.pgh.pa.us # donc on ne peut pas se fier au code de retour. # Demander aux utilisateurs de vérifier eux meêm que les bases sont OK # if [ ! "$?" -eq 0 ] # then # printf "Error restoring postgresql database\nPlease check that SQL server is running\nAborting." # exit 1 # fi done echo echo "Terminé. (vous pouvez ignorer les éventuels avertissements de pg_restore ci-dessus !)" echo echo "Vous pouvez passer à l'étape 4 de la migration (migrate_from_scodoc7.sh), voir la doc." echo #