env-docker-alfresco/scripts/restore-data.sh

70 lines
1.8 KiB
Bash

#!/bin/bash
prepare() {
echo "Preparing to restore ..."
export THISDIR=`dirname "$(readlink -f "$0")"`
export DOCKER_COMPOSE_DIR=$THISDIR
export DATA_DIR=$DOCKER_COMPOSE_DIR/data
source "$THISDIR/common.sh"
}
restore() {
if [ -d "${DATA_DIR}" ]; then
echo "Restore data directory found"
echo "Removing existing data ..."
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" down --volumes
echo "Performing a restore ..."
else
echo "Restore data directory not found; doing nothing ..."
fi
}
restore_database() {
CONTAINER_ID=$1
SQL_SCHEMA_FILENAME=$2
SQL_DATA_FILENAME=$3
DB_NAME=$4
DB_USERNAME=$5
DISPLAY_NAME=$6
if [ -f "${DATA_DIR}/$SQL_SCHEMA_FILENAME" ]; then
echo "Restoring the $DISPLAY_NAME database ..."
echo "SET session_replication_role = 'replica';" | cat - "${DATA_DIR}/$SQL_DATA_FILENAME" > /tmp/db-data.sql
echo "Uploading $DISPLAY_NAME database schema to Docker container ..."
docker cp "${DATA_DIR}/$SQL_SCHEMA_FILENAME" $CONTAINER_ID:/tmp
echo "Uploading $DISPLAY_NAME database data to Docker container ..."
docker cp /tmp/db-data.sql $CONTAINER_ID:/tmp
rm /tmp/db-data.sql
echo "Restoring $DISPLAY_NAME database schema ..."
docker container exec $CONTAINER_ID psql -U $DB_USERNAME -f /tmp/$SQL_SCHEMA_FILENAME $DB_NAME
echo "Restoring $DISPLAY_NAME database data ..."
docker container exec $CONTAINER_ID psql -U $DB_USERNAME -f /tmp/db-data.sql $DB_NAME
fi
}
restore_binaryData() {
CONTAINER_ID=$1
DATA_DIRECTORY=$2
CONTAINER_PATH=$3
DISPLAY_NAME=$4
if [ -d "${DATA_DIR}/$DATA_DIRECTORY" ]; then
echo "Restoring the $DISPLAY_NAME binary data ..."
echo "Copying $DISPLAY_NAME binary data ..."
sudo docker cp "${DATA_DIR}/$DATA_DIRECTORY" "$CONTAINER_ID:$CONTAINER_PATH"
fi
}
prepare
restore