#!/bin/bash # # Lists backup restoration. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public # License along with this program. If not, see # . # Load. source $APP_BASE/lib/hydra/functions || exit 1 hydra_config_load # Parameters. DATE="`date +%Y%m%d`" LISTS_DIR="/var/mail/virtual" SITE="sympa" # Check restore strategy. if [ "$1" == "localhost" ] || [ "$1" == "`facter hostname`" ]; then hydra_backup_environment_local else hydra_backup_environment_remote $1 restore fi # Check if folder exist on the backup. if [ ! -d "$RESTOREDIR/$LISTS_DIR" ]; then echo "Lists folder does not exist: $RESTOREDIR/$LISTS_DIR" exit 1 fi # Set git user. if hydra_check_user sympa; then LISTS_USER="sympa" else LISTS_USER="root" fi # Set git group. if hydra_check_group sympa; then LISTS_GROUP="sympa" else LISTS_GROUP="root" fi # TODO: Backup it? #hydractl backup-sympa # Restore lists folders from backup. #rsync -av $RESTOREDIR/$LISTS_DIR/wwsarchive/ $LISTS_DIR/wwsarchive/ #rsync -av $RESTOREDIR/$LISTS_DIR/expl/ $LISTS_DIR/expl/ #rsync -av $RESTOREDIR/$LISTS_DIR/bounce/ $LISTS_DIR/bounce/ rsync -av --delete $RESTOREDIR/$LISTS_DIR/ $LISTS_DIR/ DB_DUMP_BASE="$RESTOREDIR/var/backups/mysql/sqldump" # Check if there are database dumps if [ -f "$DB_DUMP_BASE/$SITE.sql.gz" ]; then DB_DUMP_EXT=".gz" DB_DUMP_EXTRACT="gunzip" elif [ -f "$DB_DUMP_BASE/$SITE.sql.bz2" ]; then DB_DUMP_EXT=".bz2" DB_DUMP_EXTRACT="bunzip2" elif [ -f "$DB_DUMP_BASE/$SITE.sql" ]; then DB_DUMP_EXT="" DB_DUMP_EXTRACT="true" fi # Restore database if [ ! -z "$DB_DUMP_EXT" ]; then echo "Restoring database $SITE..." hydra_set_tmpfile $SITE -d cp $DB_DUMP_BASE/$SITE.sql$DB_DUMP_EXT $TMPWORK ( cd $TMPWORK && $DB_DUMP_EXTRACT $SITE.sql$DB_DUMP_EXT ) hydra_truncate_database $SITE mysql $SITE < $TMPWORK/$SITE.sql hydra_unset_tmpfile $TMPWORK else echo "Database should be manually restored" fi # Fix permissions. chown -R $LISTS_USER.$LISTS_GROUP $LISTS_DIR