public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
[Helper] backup fixes
212c18fd
helper-scripts/backup_and_restore.sh | 79 +++++++++++++++++++++---------------
1 file changed, 47 insertions(+), 32 deletions(-)
Diff
diff --git a/helper-scripts/backup_and_restore.sh b/helper-scripts/backup_and_restore.sh
index 25ce74c6..f84f2427 100755
--- a/helper-scripts/backup_and_restore.sh
+++ b/helper-scripts/backup_and_restore.sh
@@ -202,41 +202,56 @@ function restore() {
;;
mysql)
SQLIMAGE=$(grep -iEo '(mysql|mariadb)\:.+' ${COMPOSE_FILE})
- read -p "mailcow will be stopped and the corresponding mailcow.conf file of the backup will be restored, do you want to proceed? [y|N] " MYSQL_STOP_MAILCOW
- if [[ ${MYSQL_STOP_MAILCOW,,} =~ ^(yes|y)$ ]]; then
- echo "Stopping mailcow..."
- docker-compose down
- else
- echo "OK, skipped."
+ if [[ -z "${SQLIMAGE}" ]]; then
+ echo "Could not determine SQL image version, skipping restore..."
shift
continue
+ elif [ ! -f "${RESTORE_LOCATION}/mailcow.conf" ]; then
+ echo "Could not find the corresponding mailcow.conf in ${RESTORE_LOCATION}, skipping restore."
+ echo "If you lost that file, copy the last working mailcow.conf file to ${RESTORE_LOCATION} and restart the restore process."
+ shift
+ continue
+ else
+ read -p "mailcow will be stopped and the currently active mailcow.conf will be modified to use the DB parameters found in ${RESTORE_LOCATION}/mailcow.conf - do you want to proceed? [Y|n] " MYSQL_STOP_MAILCOW
+ if [[ ${MYSQL_STOP_MAILCOW,,} =~ ^(no|n|N)$ ]]; then
+ echo "OK, skipped."
+ shift
+ continue
+ else
+ echo "Stopping mailcow..."
+ docker-compose down
+ fi
+ #docker stop $(docker ps -qf name=mysql-mailcow)
+ if [[ -d "${RESTORE_LOCATION}/mysql" ]]; then
+ docker run --rm \
+ -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:rw \
+ --entrypoint= \
+ -v ${RESTORE_LOCATION}/mysql:/backup \
+ ${SQLIMAGE} /bin/bash -c "shopt -s dotglob ; /bin/rm -rf /var/lib/mysql/* ; rsync -avh --usermap=root:mysql --groupmap=root:mysql /backup/ /var/lib/mysql/"
+ elif [[ -f "${RESTORE_LOCATION}/backup_mysql.gz" ]]; then
+ docker run \
+ -it --rm \
+ -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/ \
+ --entrypoint= \
+ -u mysql \
+ -v ${RESTORE_LOCATION}:/backup \
+ ${SQLIMAGE} /bin/sh -c "mysqld --skip-grant-tables & \
+ until mysqladmin ping; do sleep 3; done && \
+ echo Restoring... && \
+ gunzip < backup/backup_mysql.gz | mysql -uroot && \
+ mysql -uroot -e SHUTDOWN;"
+ fi
+ echo "Modifying mailcow.conf..."
+ source ${RESTORE_LOCATION}/mailcow.conf
+ sed -i "/DBNAME/c\DBNAME=${DBNAME}" ${SCRIPT_DIR}/../mailcow.conf
+ sed -i "/DBUSER/c\DBUSER=${DBUSER}" ${SCRIPT_DIR}/../mailcow.conf
+ sed -i "/DBPASS/c\DBPASS=${DBPASS}" ${SCRIPT_DIR}/../mailcow.conf
+ sed -i "/DBROOT/c\DBROOT=${DBROOT}" ${SCRIPT_DIR}/../mailcow.conf
+ source ${SCRIPT_DIR}/../mailcow.conf
+ echo "Starting mailcow..."
+ docker-compose up -d
+ #docker start $(docker ps -aqf name=mysql-mailcow)
fi
- #docker stop $(docker ps -qf name=mysql-mailcow)
- if [[ -d "${RESTORE_LOCATION}/mysql" ]]; then
- docker run --rm \
- -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:rw \
- --entrypoint= \
- -v ${RESTORE_LOCATION}/mysql:/backup \
- ${SQLIMAGE} /bin/bash -c "shopt -s dotglob ; /bin/rm -rf /var/lib/mysql/* ; rsync -avh --usermap=root:mysql --groupmap=root:mysql /backup/ /var/lib/mysql/"
- elif [[ -f "${RESTORE_LOCATION}/backup_mysql.gz" ]]; then
- docker run \
- -it --rm \
- -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/ \
- --entrypoint= \
- -u mysql \
- -v ${RESTORE_LOCATION}:/backup \
- ${SQLIMAGE} /bin/sh -c "mysqld --skip-grant-tables & \
- until mysqladmin ping; do sleep 3; done && \
- echo Restoring... && \
- gunzip < backup/backup_mysql.gz | mysql -uroot && \
- mysql -uroot -e SHUTDOWN;"
- fi
- echo "Copying mailcow.conf..."
- mv mailcow.conf mailcow.conf_backup_$(date +"%Y-%m-%d-%H-%M-%S")
- cp ${RESTORE_LOCATION}/mailcow.conf mailcow.conf
- echo "Starting mailcow..."
- docker-compose up -d
- #docker start $(docker ps -aqf name=mysql-mailcow)
;;
esac
shift