#!/bin/bash # ============================================= # ERPNext Universal S3 Restore Script # Für Timme Hosting, Hetzner, AWS etc. # ============================================= # ================== KONFIGURATION ================== SITE="xxx" # Sitename S3_ENDPOINT=" " # Serveradresse (mit https://) S3_BUCKET="bucket-name" # Bucket S3_ACCESS_KEY="" # Access Key S3_SECRET_KEY="" # Secret Key S3_REGION="eu-central-1" ENCRYPTION_KEY="" # Encryption Key # =================================================== # SITE kann als Parameter übergeben werden if [ "$1" != "" ]; then SITE="$1" fi if [ -z "$ENCRYPTION_KEY" ] || [ -z "$S3_ACCESS_KEY" ] || [ -z "$S3_SECRET_KEY" ]; then echo "Fehler: ENCRYPTION_KEY, S3_ACCESS_KEY und S3_SECRET_KEY müssen gesetzt werden!" exit 1 fi echo "=== ERPNext Universal S3 Restore Start ===" echo "Site: $SITE" echo "Endpoint: $S3_ENDPOINT" echo "Bucket: $S3_BUCKET" echo "Startzeit: $(date)" echo "==================================================" # AWS CLI prüfen und ggf. installieren if ! command -v aws &> /dev/null; then echo "AWS CLI wird installiert..." sudo apt update && sudo apt install awscli -y fi cd ~/frappe-bench # 1. Neueste Backup-Dateien suchen und herunterladen echo "1. Lade neuestes Backup aus S3 herunter..." LOCAL_BACKUP_DIR=~/backups/$(date +%Y-%m-%d)_s3_restore mkdir -p $LOCAL_BACKUP_DIR # Neueste Dateien herunterladen (nach Timestamp sortiert) aws s3 cp s3://$S3_BUCKET/ $LOCAL_BACKUP_DIR/ --recursive \ --endpoint-url $S3_ENDPOINT \ --aws-access-key-id $S3_ACCESS_KEY \ --aws-secret-access-key $S3_SECRET_KEY \ --exclude "*" \ --include "*database-enc.sql.gz" \ --include "*files-enc.tar" \ --include "*private-files-enc.tar" echo " → Download abgeschlossen. Dateien in: $LOCAL_BACKUP_DIR" # 2. Restore durchführen echo "2. Restore wird durchgeführt..." bench --site $SITE restore \ $LOCAL_BACKUP_DIR/*database-enc.sql.gz \ --with-public-files $LOCAL_BACKUP_DIR/*files-enc.tar \ --with-private-files $LOCAL_BACKUP_DIR/*private-files-enc.tar \ --encryption-key "$ENCRYPTION_KEY" \ --force # 3. Nacharbeiten echo "3. Migration, Cache und Restart..." bench --site $SITE migrate bench --site $SITE clear-cache bench build bench restart echo "==================================================" echo "Restore erfolgreich abgeschlossen!" echo "Endzeit: $(date)"