#!/bin/bash # ============================================= # ERPNext Universal S3 Restore Script # Für Timme Hosting, Hetzner, Backblaze etc. # ============================================= # ================== KONFIGURATION ================== SITE="erp.berchmans.de" # Kann als Parameter übergeben werden S3_ENDPOINT="https://s3.timmehosting.de" # ← Bei Timme Hosting S3_BUCKET="dein-bucket-name" # ← Dein Bucket-Name S3_ACCESS_KEY="" # ← Dein Access Key S3_SECRET_KEY="" # ← Dein Secret Key ENCRYPTION_KEY="" # ← Dein Encryption Key # =================================================== # SITE als Parameter möglich 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 installieren falls fehlt if ! command -v aws &> /dev/null; then echo "AWS CLI wird installiert..." sudo apt update && sudo apt install awscli -y fi cd ~/frappe-bench # Lokalen Backup-Ordner erstellen LOCAL_BACKUP_DIR=~/backups/$(date +%Y-%m-%d)_s3_restore mkdir -p $LOCAL_BACKUP_DIR # 1. Neueste Backup-Dateien herunterladen echo "1. Lade neuestes Backup aus S3 herunter..." AWS_CMD="aws s3 cp s3://$S3_BUCKET/ $LOCAL_BACKUP_DIR/ --recursive \ --endpoint-url $S3_ENDPOINT \ --no-sign-request false" # Credentials per Environment-Variablen (sicherer und stabiler) export AWS_ACCESS_KEY_ID=$S3_ACCESS_KEY export AWS_SECRET_ACCESS_KEY=$S3_SECRET_KEY aws s3 cp s3://$S3_BUCKET/ $LOCAL_BACKUP_DIR/ --recursive \ --endpoint-url $S3_ENDPOINT \ --exclude "*" \ --include "*database-enc.sql.gz" \ --include "*files-enc.tar" \ --include "*private-files-enc.tar" echo " → Download abgeschlossen. Dateien in: $LOCAL_BACKUP_DIR" # Dateien prüfen ls -la $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)"