docker-mysql-cron-backup/restore.sh

39 lines
1,006 B
Bash
Raw Normal View History

#!/bin/bash
2017-04-16 11:29:31 +02:00
[ -z "${MYSQL_USER}" ] && { echo "=> MYSQL_USER cannot be empty" && exit 1; }
# If provided, take password from file
[ -z "${MYSQL_PASS_FILE}" ] || { MYSQL_PASS=$(head -1 "${MYSQL_PASS_FILE}"); }
# Alternatively, take it from env var
2017-04-16 11:29:31 +02:00
[ -z "${MYSQL_PASS}" ] && { echo "=> MYSQL_PASS cannot be empty" && exit 1; }
if [ "$#" -ne 1 ]
then
echo "You must pass the path of the backup file to restore"
fi
2021-05-09 17:57:18 +02:00
set -o pipefail
2022-02-04 20:44:11 +01:00
if [ -z "${USE_PLAIN_SQL}" ]
then
SQL=$(gunzip -c "$1")
else
SQL=$(cat "$1")
fi
DB_NAME=${MYSQL_DATABASE:-${MYSQL_DB}}
if [ -z "${DB_NAME}" ]
then
2022-02-04 20:44:11 +01:00
echo "=> Searching database name in $1"
2021-05-24 20:11:30 +02:00
DB_NAME=$(echo "$SQL" | grep -oE '(Database: (.+))' | cut -d ' ' -f 2)
fi
2022-02-04 20:44:11 +01:00
[ -z "${DB_NAME}" ] && { echo "=> Database name not found" && exit 1; }
echo "=> Restore database $DB_NAME from $1"
2021-05-09 17:58:46 +02:00
if echo "$SQL" | mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME"
2017-04-16 11:29:31 +02:00
then
echo "=> Restore succeeded"
else
echo "=> Restore failed"
fi