#!/bin/bash

#
# ScoDoc: save all user data (database, configs, images, archives...) in separate directory
# 
#  Utile pour migrer ScoDoc d'un serveur a un autre
#  Executer en tant que root sur le serveur d'origine
#
# E. Viennet, Sept 2011, Aug 2020
#
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 database..."
chown postgres "$DEST"
su -c "pg_dumpall > \"$DEST\"/scodoc.dump.txt" postgres
if [ ! "$?" -eq 0 ] 
then
  printf "Error dumping postgresql database\nPlease check that SQL server is running\nAborting."
  exit 1
fi
chown root "$DEST"

# Zope DB and ScoDoc archives:
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)."
