Skip to content
Snippets Groups Projects

WIP: Resolve "Restore from legacy backup"

Open Michel Memeteau requested to merge 182-restore-from-legacy-backup into master
1 file
+ 14
13
Compare changes
  • Side-by-side
  • Inline
+ 14
13
@@ -6,7 +6,8 @@
#- Author: B. Mauclaire - bm@ekimia.fr - 2019/11/13
#- Licence: GNU Affero General Public License v3.0
#- Usage:
# * Argument: application's name, database container's ID, atabase engine
# * Argument: application's name, database container's ID/NAME, database engine
# * The script has to be ran with sudo in order to be able to write in volume's directories.
# * 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 application's name, so files' name are generic in this script.
# * Data files will be restored in "data" directory as data file archives contain subdirectory.
@@ -17,7 +18,7 @@
#--- Print script's help/usage:
function print_help ()
{
echo "Usage: ./restore_app.sh APLICATION_NAME(piwigo/prestashop/nextcloud) DATABASE_CONTAINER_ID/NAME [DB_ENGINE(mysql/mariadb/pgsql)]"
echo "Usage: sudo ./restore_app.sh APLICATION_NAME(piwigo/prestashop/nextcloud) DATABASE_CONTAINER_ID/NAME [DB_ENGINE(mysql/mariadb/pgsql)]"
exit 1
}
@@ -31,17 +32,13 @@ function main_proc ()
#-- Manage some variable used by the script:
check_arguments
DATA_DIR='data'
#docker-compose stop ; # le container de la bd doit tourner sinon le restore du ump sql ne peut pas se connecter aun container
#-- Restore:
db_informations
restore_db
restore_data
update_app_config
#-- Restart containers:
#docker-compose restart
echo ""
echo "***** End of $APP_NAME restore *****"
}
@@ -88,13 +85,12 @@ function restore_db ()
#-- Restore database from sql archive:
case $DB_ENGINE in
"mysql" | "mariadb")
#- // TO TEST //#
docker exec -it $CONT_DB_ID bash -c "mysqldump '"$DB_NAME"' -u '"$DB_USER"' -p${DB_PWD}" < ${DB_NAME}.sql
docker exec -i $CONT_DB_ID bash -c "mysql -u '"$DB_USER"' -p${DB_PWD} '"$DB_NAME"'" < ${DB_NAME}.sql
#cat ${DB_NAME}.sql | docker exec -i $CONT_DB_ID /usr/bin/mysql '"$DB_NAME"' -u '"$DB_USER"' --password='"$DB_PWD"'
;;
"pgsql")
#- // TO TEST //#
docker exec -it $CONT_DB_ID bash -c "PGPASSWORD='"$DB_PWD"' psql -U '"$DB_USER"' '"$DB_NAME"'" < ${DB_NAME}.sql
docker exec -i $CONT_DB_ID bash -c "PGPASSWORD='"$DB_PWD"' psql -U '"$DB_USER"' '"$DB_NAME"'" < ${DB_NAME}.sql
#cat ${DB_NAME}.sql | docker exec -i $CONT_DB_ID PGPASSWORD='"$DB_PWD"' /usr/bin/psql -U '"$DB_USER"' '"$DB_NAME"'
;;
esac
@@ -107,9 +103,12 @@ function restore_db ()
function restore_data ()
{
echo "*** Restore application data from ${APP_NAME}_*.tgz to container directory ***"
echo "Start uncompressing archive(s) (be patient)..."
echo "** Start uncompressing archive(s) (be patient)... **"
cd $APP_DIR
tar -xzf ../*.tgz
for archfile in ../*.tgz ; do
echo "Uncompress $archfile..."
tar -xzf $archfile
done
echo "*** Archive(s) *.tgz restored! ***"
}
@@ -121,7 +120,9 @@ function update_app_config ()
case $APP_NAME in
"piwigo")
#-- Update db_host name to be container's databse's name in docker-compose.yml, assummed 'db'. See docker-compose.yml for "config" volume name:
sed -i -e 's/localhost/db/' "$APP_DIR/config/database.inc.php"
#sed -i -e 's/localhost/db/' "$DATA_DIR/config/database.inc.php"
sed -i -e 's/localhost/db/' "$DATA_DIR/local/config/database.inc.php"
mv $DATA_DIR/local/config/config.inc.php $DATA_DIR/local/config/config.inc.php.old
;;
"prestashop")
#-- Todo:
Loading