Skip to content
restore_app.sh 2.14 KiB
Newer Older
#!/bin/bash
#- Restore app (Piwigo) database abd ddata files
#- Author: B. Mauclaire - bm@ekimia.fr - 2019/11/13
#- Usage:
#  * Argument: database container's ID
#  * Run in the directory containing vm archives + db.env + docker-compose.yml: so docker app directory's name isn't necessary
#  * Vm archive's name is built with the database's name, so files' name are generic in this script
#  * Data files will be restored in "data" directory as ddate file archive containes subdirectory's name.

#--- Manage arguments:
case $# in
   1) ARG1="$1" ;;
   *) echo "Usage: ./restore_piwigo.sh CONTAINER_DATABASE_ID" ; exit 1 ;;
esac

#--- Connexion parameters:
#HOST_NAME='jaguar.ekimia.fr'
#HOST_USER='root'
#HOST_PORT=622
#DOCKER_DIR='/docker/piwigo/data'
#APP_NAME='piwigo'
CONT_DB_ID=$ARG1 ; # piwigo_db
DATA_DIR='data'
#- Cf docker-compose.yml : automatisation possible en parsant le dc.yml
APP_DATA1='images'
APP_DATA2='upload'

#--- Beginning backup:
echo "***** Restore application data *****"
echo ""
docker-compose stop

#--- Filling database variable from db.env:
echo "*** Filling database variable from db.env ***"
#-- Use db.env and pwg.env to get user + pswd allready in varaibles without regexp:
source ./db.env
#- Fill the following variables: MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD, PUID, PGID, TZ
DB_NAME="$MYSQL_DATABASE"
DB_USER="$MYSQL_USER"
DB_PWD="$MYSQL_PASSWORD"

#--- Restore database:
echo "*** Database restore from file ${DB_NAME}.sql ***"
#-- Restore database from sql archive:
#//// A TESTER ////#
## docker exec -it $CONT_DB_ID bash -c "mysqldump $MYSQL_DATABASE -u $ -p${DB_PWD}" < ${DB_NAME}.sql
cat ${DB_NAME}.sql | docker exec -i $CONT_DB_ID /usr/bin/mysql '"$DB_NAME"' -u '"$DB_USER"' --password='"$DB_PWD"'
echo "Database dump restored!"

#--- Restore data files:
echo "*** Restore application data from ${DB_NAME}_*.tgz to container directory ***"
echo "Start uncompressing archive(s) (be patient)..."
cd $DATA_DIR
tar xzf ../${DB_NAME}_${APP_DATA1}.tgz
tar xzf ../${DB_NAME}_${APP_DATA2}.tgz
echo "Archive(s) ${DB_NAME}_*.tgz restored!"

#--- End of tasks:
docker-compose restart
echo ""
echo "***** End of $DB_NAME restore *****"