#!/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)."