From 1601b8e156830356c82e0e16f6047f3b4ff8aedc Mon Sep 17 00:00:00 2001 From: JensFalk Date: Tue, 9 Jun 2026 15:49:53 +0200 Subject: [PATCH] restore-erpnext.sh aktualisiert --- restore-erpnext.sh | 65 ++++++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/restore-erpnext.sh b/restore-erpnext.sh index 87bfc25..fe99ee5 100644 --- a/restore-erpnext.sh +++ b/restore-erpnext.sh @@ -1,50 +1,71 @@ #!/bin/bash # ============================================= -# ERPNext Restore Script (Version 16) -# Mit Verschlüsselung + Dateien +# ERPNext Full Restore Script mit S3 Download +# Version 16 - Mit Verschlüsselung # ============================================= +# ================== KONFIGURATION ================== -SITE="###" # Hier die Site eintragen (z.B. erp.meinedomain.de) -BACKUP_PATH="" # Hier den Ordner mit den Backups angeben (z.B. /home/frappeuser/backups/2025-06-09) -ENCRYPTION_KEY="" # Hier den Encryption Key einfügen +SITE="erp.berchmans.de" # z.B. erp.meine-domain.de +S3_BUCKET="dein-bucket-name" # z.B. erpnext-backups +BACKUP_FOLDER="" # Leer lassen = neuesten Ordner automatisch nehmen +ENCRYPTION_KEY="" # Dein Encryption Key +AWS_PROFILE="default" # Falls es mehrere AWS-Profile sind +# =================================================== -if [ -z "$BACKUP_PATH" ] || [ -z "$ENCRYPTION_KEY" ]; then - echo "Fehler: BACKUP_PATH und ENCRYPTION_KEY müssen im Script gesetzt werden!" +if [ -z "$ENCRYPTION_KEY" ]; then + echo "Fehler: ENCRYPTION_KEY muss gesetzt werden!" exit 1 fi -echo "=== ERPNext Restore Start ===" +echo "=== ERPNext S3 Restore Start ===" echo "Site: $SITE" -echo "Backup-Pfad: $BACKUP_PATH" +echo "Bucket: $S3_BUCKET" echo "Startzeit: $(date)" echo "==================================================" cd ~/frappe-bench -echo "1. Restore wird durchgeführt..." +# 1. Neueste Backup-Version aus S3 herunterladen +echo "1. Lade neuestes Backup aus S3 herunter..." + +if [ -z "$BACKUP_FOLDER" ]; then + echo " → Automatisch neuesten Backup-Ordner suchen..." + LATEST=$(aws s3 ls s3://$S3_BUCKET/ --recursive | sort | tail -1 | awk '{print $4}' | xargs dirname) + BACKUP_FOLDER="s3://$S3_BUCKET/$LATEST" +fi + +# Lokalen Backup-Ordner erstellen +LOCAL_BACKUP_DIR=~/backups/$(date +%Y-%m-%d)_s3_restore +mkdir -p $LOCAL_BACKUP_DIR + +echo " → Lade Backup herunter nach: $LOCAL_BACKUP_DIR" +aws s3 cp $BACKUP_FOLDER/ $LOCAL_BACKUP_DIR/ --recursive --profile $AWS_PROFILE + +echo " → Download abgeschlossen." + +# 2. Restore durchführen +echo "2. Restore wird durchgeführt..." + bench --site $SITE restore \ - $BACKUP_PATH/database.sql.gz \ - --with-public-files $BACKUP_PATH/files.tar \ - --with-private-files $BACKUP_PATH/private-files.tar \ + $LOCAL_BACKUP_DIR/database.sql.gz \ + --with-public-files $LOCAL_BACKUP_DIR/files.tar \ + --with-private-files $LOCAL_BACKUP_DIR/private-files.tar \ --encryption-key "$ENCRYPTION_KEY" \ --force -echo "2. Migration ausführen..." +# 3. Nacharbeiten +echo "3. Migration, Cache und Restart..." bench --site $SITE migrate - -echo "3. Cache leeren und Assets bauen..." bench --site $SITE clear-cache bench build - -echo "4. Bench neustarten..." bench restart echo "==================================================" -echo "Restore erfolgreich abgeschlossen!" +echo "Restore mit S3-Download erfolgreich abgeschlossen!" echo "Endzeit: $(date)" echo "" echo "Nächste Schritte:" -echo "- E-Mail-Konto neu einrichten" -echo "- Google Drive / S3 Autorisierung neu machen" -echo "- Scheduler aktivieren: bench --site $SITE enable-scheduler" \ No newline at end of file +echo "- E-Mail-Konto prüfen und neu einrichten" +echo "- Google Drive Autorisierung erneuern" +echo "- Scheduler aktivieren" \ No newline at end of file