diff --git a/config/save_scodoc7_data.sh b/config/save_scodoc7_data.sh new file mode 100755 index 00000000..75308382 --- /dev/null +++ b/config/save_scodoc7_data.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +# +# ScoDoc: save all user data (database, configs, images, archives...) in separate directory +# +# Utile pour migrer les données ScoDoc 7 vers ScoDoc 9 +# Executer en tant que root sur le serveur d'origine +# +# E. Viennet, Sept 2011, Aug 2020, Aug 21 +# +source utils.sh + +# Destination directory +if [ ! $# -eq 1 ] +then + echo "Usage: $0 destination_directory" + exit 1 +fi +DEST=$1 +# remove trailing slashs if needed: +shopt -s extglob +DEST="${DEST%%+(/)}" + +if [ ! -e "$DEST" ] +then + echo Creating directory "$DEST" + mkdir "$DEST" +else + echo "Error: Directory " "$DEST" " exists" + echo "remove it or specify another destination !" + exit 2 +fi + +INSTANCE_DIR=/opt/scodoc +SCODOC_DIR="$INSTANCE_DIR/Products/ScoDoc" + +source utils.sh +check_uid_root "$0" + +echo "Stopping ScoDoc..." +scodocctl stop + +# Dump all postgres databases + +echo "Dumping SQL databases..." +chown postgres "$DEST" +for cfgfile in "$SCODOC_VAR_DIR"/config/depts/*cfg +do + dept="${cfgfile%*.cfg}" + db_name="SCO$dept" + echo "$db_name" + su -c "pg_dump --format=custom --file=\"$DEST/$db_name.dump\" \"$db_name\"" + if [ ! "$?" -eq 0 ] + then + printf "Error dumping postgresql database\nPlease check that SQL server is running\nAborting." + exit 1 + fi +done +chown root "$DEST" + +# Zope DB, ScoDoc archives, configuration, photos, etc. +echo "Copying var/ ..." +cp -rp "$INSTANCE_DIR/var" "$DEST" + +# Depts db config (now in .../var) +shopt -s nullglob +if [ -n "$(echo ${SCODOC_DIR}/config/depts/*.cfg)" ] +then + echo "Copying legacy depts configs..." + cp -rp "$SCODOC_DIR/config/depts" "$DEST" +fi + + + +# Photos des etudiants (now in .../var) +if [ -e "$SCODOC_DIR/static/photos" ] +then + echo "Copying legacy photos..." + cp -rp "$SCODOC_DIR/static/photos" "$DEST" +fi + +echo "Copying logos..." +cp -rp "$SCODOC_DIR/logos" "$DEST" + +echo "Copying configuration file..." +cp -p "$SCODOC_DIR/config/scodoc_config.py" "$DEST" + +echo "Copying server logs..." +cp -rp "$INSTANCE_DIR/log" "$DEST" + + +# --- Archive all files in a tarball to ease transfer +echo +echo "Archiving backup files in a $DEST.tgz..." +base=$(basename "$DEST") +(cd "$DEST"/.. || terminate "directory error"; tar cfz "$DEST".tgz "$base") + +echo "Done (you can copy " "$DEST"".tgz to destination machine)." diff --git a/config/save_scodoc_data.sh b/config/save_scodoc_data.sh index 24d876ae..6f5b93c2 100755 --- a/config/save_scodoc_data.sh +++ b/config/save_scodoc_data.sh @@ -10,6 +10,19 @@ # source utils.sh +echo "Ce script est utile pour transférer les données d'un serveur ScoDoc 7" +echo "à un autre ScoDoc 7." +echo "NE PAS L'UTILISER POUR PASSER A UN SERVEUR ScoDoc 9 !" +echo "Pour cela, utiliser save_scodoc7_data.sh" +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 + # Destination directory if [ ! $# -eq 1 ] then