#!/bin/bash BACKUP="$1" if [ -z "$BACKUP" ] || [ ! -f "$BACKUP" ]; then echo "Backup file not found: $BACKUP" exit 1 fi if [ "$(whoami)" != "root" ]; then echo "Must be running as root!" exit 1 fi DIR="/root/restore/$(date +%s)" if [ -d "$DIR" ]; then echo "Restore already running!?" exit 1 fi mkdir -p "$DIR" if ! cd "$DIR"; then echo "Could not cd to $DIR" exit 1 fi if ! tar --ignore-failed-read -x -f "$BACKUP"; then echo "Could not extract $BACKUP - make sure it's a valid .tar.gz / .tgz" exit 1 fi if [ ! -f db.sql ]; then echo "Error: database dump not found in backup - are you sure this is a valid backup?" exit 1 fi if [ ! -f files.tgz ]; then echo "Error: files.tgz not found in backup - are your sure this is a valid backup?" exit 1 fi mysql --defaults-extra-file=/etc/mysql/debian.cnf --default-character-set=utf8 < db.sql RET=$? if [ $RET -ne 0 ]; then echo "Error: Restoring database contents failed with exit code $RET" exit 1 fi echo "UPDATE openslx.property SET value = 'invalid' WHERE name = 'server-ip' LIMIT 1" | mysql --defaults-extra-file=/etc/mysql/debian.cnf --default-character-set=utf8 tar --ignore-failed-read -x -f files.tgz -C / RET=$? if [ $RET -ne 0 ]; then echo "WARNING: Restoring filesystem contents failed with exit code $RET - backup might be incomplete!" fi rm -rf -- "$DIR" rm -f -- "$BACKUP" echo "Success." exit 0