72 lines
2 KiB
Bash
Executable file
72 lines
2 KiB
Bash
Executable file
#!/bin/bash
|
|
# Restore script for Studio EinsZwoVier services
|
|
# Usage: ./restore.sh YYYYMMDD_HHMMSS
|
|
|
|
set -e
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: $0 BACKUP_DATE"
|
|
echo "Example: $0 20251007_020000"
|
|
exit 1
|
|
fi
|
|
|
|
# Get the directory where this script is located
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
BACKUP_DIR="${BACKUP_DIR:-/path/to/backups/einszwovier}"
|
|
DATE=$1
|
|
|
|
echo "=== WARNING: This will OVERWRITE current data! ==="
|
|
echo "=== Press Ctrl+C within 10 seconds to cancel... ==="
|
|
sleep 10
|
|
|
|
echo "=== Starting restore from backup $DATE ==="
|
|
echo "Working directory: $SCRIPT_DIR"
|
|
|
|
# Stop all containers
|
|
echo "Stopping containers..."
|
|
cd "$SCRIPT_DIR"
|
|
docker compose down
|
|
|
|
# 1. Restore BookStack database
|
|
echo "Restoring BookStack database..."
|
|
docker compose up -d bookstack-mariadb
|
|
sleep 10 # Wait for MariaDB to start
|
|
|
|
zcat "$BACKUP_DIR/bookstack_db_$DATE.sql.gz" | \
|
|
docker exec -i bookstack-mariadb mariadb \
|
|
-u"${DB_USERNAME:-bookstack}" \
|
|
-p"${DB_PASSWORD}" \
|
|
"${DB_DATABASE:-bookstack}"
|
|
|
|
# 2. Restore BookStack files
|
|
echo "Restoring BookStack files..."
|
|
tar -xzf "$BACKUP_DIR/bookstack_files_$DATE.tar.gz" -C "$SCRIPT_DIR"
|
|
|
|
# 3. Restore Matrix data
|
|
echo "Restoring Matrix data..."
|
|
rm -rf "$SCRIPT_DIR/matrix/data"
|
|
tar -xzf "$BACKUP_DIR/matrix_data_$DATE.tar.gz" -C "$SCRIPT_DIR"
|
|
|
|
# 4. Restore PDF uploads
|
|
echo "Restoring PDF uploads..."
|
|
rm -rf "$SCRIPT_DIR/data/uploads"
|
|
tar -xzf "$BACKUP_DIR/pdf_uploads_$DATE.tar.gz" -C "$SCRIPT_DIR"
|
|
|
|
# 5. Restore courses data (if exists)
|
|
if [ -f "$BACKUP_DIR/courses_$DATE.tar.gz" ]; then
|
|
echo "Restoring courses data..."
|
|
tar -xzf "$BACKUP_DIR/courses_$DATE.tar.gz" -C "$SCRIPT_DIR"
|
|
fi
|
|
|
|
# 6. Restore .env if needed
|
|
if [ -f "$BACKUP_DIR/env_$DATE.backup" ]; then
|
|
echo "Environment file backup found (not automatically restored)"
|
|
echo "To restore: cp $BACKUP_DIR/env_$DATE.backup $SCRIPT_DIR/.env"
|
|
fi
|
|
|
|
# Start all containers
|
|
echo "Starting all containers..."
|
|
docker compose up -d
|
|
|
|
echo "=== Restore completed at $(date) ==="
|
|
echo "Please verify all services are working correctly"
|