forked from ScoDoc/ScoDoc
142 lines
4.6 KiB
Bash
Executable File
142 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Migre une install ScoDoc 7 vers ScoDoc 9
|
|
# Les données ScoDoc7 sauvegardées par save_scodoc7_data.sh
|
|
# sont copiés au bon endroit
|
|
# puis les bases SQL ScoDoc 7 sont traduites dans la base ScoDoc 9
|
|
#
|
|
# Fichiers de données et config locale:
|
|
# archives, photos: /opt/scodoc/var/ => /opt/scodoc-data
|
|
#
|
|
#
|
|
|
|
set -euo pipefail
|
|
|
|
# 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"
|
|
|
|
cd "$SCODOC_DIR" || die "ScoDoc 9 non installe"
|
|
source "venv/bin/activate"
|
|
|
|
# Ce script doit tourner comme "root"
|
|
check_uid_root "$0"
|
|
# En principe, l'utilisateur "scodoc" existe déjà, mais au cas où on vérifie:
|
|
check_create_scodoc_user
|
|
|
|
# Usage
|
|
if [ ! $# -eq 1 ]
|
|
then
|
|
echo "Usage: $0 directory"
|
|
exit 1
|
|
fi
|
|
|
|
SCODOC7_HOME="$1" # racine de l'archive importée
|
|
|
|
#SCODOC7_HOME="/opt/scodoc7"
|
|
#SCODOC7_DIR="${SCODOC7_HOME}/Products/ScoDoc"
|
|
|
|
# if [ "${SRC##*.}" == "tgz" ]
|
|
# then
|
|
# if [ -e ${SRC%%.*} ]
|
|
# then
|
|
# echo "Error: ${SRC} is an archive but ${SRC%%.*} already exists"
|
|
# exit 2
|
|
# fi
|
|
# echo "extracting archive ${SRC}..."
|
|
# tar xvfz ...
|
|
|
|
# --- 2. Propriétaire des bases de données
|
|
# Bases appartenant à www-data:
|
|
# inutile si on importe via pg_restore (voir restore-scodoc7_data.sh)
|
|
migrate_database_ownership() {
|
|
SCO7_BASES=$(su -c "psql -l -t | grep www-data" "$POSTGRES_SUPERUSER" | awk -F '|' '{print $1}')
|
|
for base in $SCO7_BASES
|
|
do
|
|
su -c "psql -c 'REASSIGN OWNED BY \"www-data\" TO scodoc;' $base" "$POSTGRES_SUPERUSER"
|
|
done
|
|
su -c "psql -c 'REASSIGN OWNED BY \"www-data\" TO scodoc;'" "$POSTGRES_SUPERUSER"
|
|
}
|
|
|
|
# --- 3. Fichiers locaux: /opt/scodoc/var => /opt/scodoc-data
|
|
migrate_local_files() {
|
|
echo "Déplacement des fichiers de configuration et des archives"
|
|
SCODOC_VAR_DIR_BACKUP="$SCODOC_VAR_DIR".bak
|
|
if [ -e "$SCODOC_VAR_DIR_BACKUP" ]
|
|
then
|
|
die "supprimer ou déplacer $SCODOC_VAR_DIR_BACKUP avant de continuer"
|
|
fi
|
|
if [ -e "$SCODOC_VAR_DIR" ]
|
|
then
|
|
echo "renomme $SCODOC_VAR_DIR en $SCODOC_VAR_DIR_BACKUP"
|
|
mv "$SCODOC_VAR_DIR" "$SCODOC_VAR_DIR_BACKUP"
|
|
fi
|
|
mkdir "$SCODOC_VAR_DIR" || die "erreur creation repertoire"
|
|
mv "${SCODOC7_HOME}"/var/scodoc/* "$SCODOC_VAR_DIR" || die "migrate_local_files failed"
|
|
|
|
# Anciens logs ScoDoc7
|
|
old_logs_dest="$SCODOC_VAR_DIR/log/scodoc7"
|
|
echo "Copie des anciens logs ScoDoc 7 dans $old_logs_dest"
|
|
mkdir -p "$old_logs_dest" || die "erreur creation $old_logs_dest"
|
|
mv "${SCODOC7_HOME}"/log/* "$old_logs_dest" || die "erreur mv"
|
|
|
|
# Templates locaux poursuites etudes
|
|
if [ -e "${SCODOC7_HOME}"/config/doc_poursuites_etudes/local ]
|
|
then
|
|
mv "${SCODOC7_HOME}"/config/doc_poursuites_etudes/local "$SCODOC_VAR_DIR"/config/doc_poursuites_etudes || die "migrate_local_files failed to migrate doc_poursuites_etudes/local"
|
|
fi
|
|
# S'assure que le propriétaire est "scodoc":
|
|
chown -R "${SCODOC_USER}:${SCODOC_GROUP}" "${SCODOC_VAR_DIR}" || die "change_scodoc_file_ownership failed on ${SCODOC_VAR_DIR}"
|
|
}
|
|
|
|
|
|
# ------ MAIN
|
|
|
|
change_scodoc_file_ownership
|
|
|
|
migrate_local_files
|
|
set_scodoc_var_dir
|
|
|
|
echo
|
|
echo "Les fichiers locaux de ScoDoc: configuration, photos, procès-verbaux..."
|
|
echo "sont maintenant stockées dans $SCODOC_VAR_DIR"
|
|
echo
|
|
|
|
|
|
# ----- Migration base utilisateurs
|
|
echo
|
|
echo "-------------------------------------------------------------"
|
|
echo "Importation des utilisateurs de ScoDoc7 dans ScoDoc 9 "
|
|
echo "(la base SCOUSERS de ScoDoc7 sera laissée inchangée)"
|
|
echo "(les utilisateurs ScoDoc 9 existants seront laissés inchangés)"
|
|
echo "-------------------------------------------------------------"
|
|
echo
|
|
|
|
su -c "(cd $SCODOC_DIR && flask import-scodoc7-users)" "$SCODOC_USER"
|
|
|
|
|
|
# ----- Migration bases départements
|
|
# les départements ScoDoc7 ont été déplacés dans /opt/scodoc-data/config/dept
|
|
for f in "$SCODOC_VAR_DIR"/config/depts/*.cfg
|
|
do
|
|
dept=$(basename "${f%.*}")
|
|
db_name=$(echo "SCO$dept" | tr "[:lower:]" "[:upper:]")
|
|
echo
|
|
echo "----------------------------------------------"
|
|
echo "| MIGRATION DU DEPARTEMENT $dept"
|
|
echo "----------------------------------------------"
|
|
su -c "(cd $SCODOC_DIR && flask import-scodoc7-dept $dept $db_name)" "$SCODOC_USER"
|
|
echo "restarting postgresql server..."
|
|
systemctl restart postgresql
|
|
done
|
|
|
|
# Précaution a priori inutile (import-scodoc7-dept efface les caches)
|
|
systemctl restart redis
|
|
|
|
|
|
# Commande listant les nom des departement en DB:
|
|
# Liste des bases de données de département:
|
|
# dept_db=$(psql -l | awk '{print $1;}' | grep ^SCO | grep -v SCOUSERS | grep -v SCO8USERS | awk '{print substr($1,4);}')
|