Skip to content
restore_app.sh 1.98 KiB
Newer Older
#!/bin/bash

#- Goal: restore application's database and data 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 data file archive containes subdirectory.

#--- Manage arguments:
case $# in
   1) CONT_DB_ID="$1" ;;
   *) echo "Usage: ./restore_piwigo.sh CONTAINER_DATABASE_ID" ; exit 1 ;;
#--- Connexion parameters:
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 sql dump ***"
#-- 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 $APP_DIR
#tar xzf ../${DB_NAME}_${APP_DATA1}.tgz
tar xzf ../*.tgz
echo "*** Archive(s) *.tgz restored! ***"


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