diff --git a/restore-erpnext.sh b/restore-erpnext.sh index 29648e0..4528936 100644 --- a/restore-erpnext.sh +++ b/restore-erpnext.sh @@ -2,20 +2,25 @@ # ============================================= # ERPNext Universal S3 Restore Script -# Funktioniert mit AWS S3 + Timme Hosting + Hetzner + Backblaze etc. +# Für Timme Hosting, Hetzner, AWS etc. # ============================================= + # ================== KONFIGURATION ================== -SITE="xxx" # ERPNext Site eintragen -S3_ENDPOINT=" " # Adresse des S3 Servers (mit https://) -S3_BUCKET="der-bucket-name" # Bucket-Name +SITE="xxx" # Sitename +S3_ENDPOINT="https://s3.timmehosting.de" # Serveradresse (mit https://) +S3_BUCKET="dein-bucket-name" # Bucket S3_ACCESS_KEY="" # Access Key S3_SECRET_KEY="" # Secret Key -S3_REGION="eu-central-1" # Oft "eu-central-1" oder "us-east-1" bei kompatiblen Anbietern +S3_REGION="eu-central-1" -BACKUP_FOLDER="" # Leer lassen = neuesten Ordner automatisch -ENCRYPTION_KEY="" # Dein Backup Encryption Key +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 @@ -28,35 +33,39 @@ 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-Version herunterladen -echo "1. Lade neuestes Backup herunter..." - -if [ -z "$BACKUP_FOLDER" ]; then - echo " → Suche neuesten Backup-Ordner..." - LATEST=$(aws s3 ls s3://$S3_BUCKET/ --recursive --endpoint-url $S3_ENDPOINT | sort | tail -1 | awk '{print $4}' | xargs dirname) - BACKUP_FOLDER="s3://$S3_BUCKET/$LATEST" -fi +# 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 -echo " → Lade herunter nach: $LOCAL_BACKUP_DIR" - -aws s3 cp $BACKUP_FOLDER/ $LOCAL_BACKUP_DIR/ --recursive \ +# 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 + --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." +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.sql.gz \ - --with-public-files $LOCAL_BACKUP_DIR/files.tar \ - --with-private-files $LOCAL_BACKUP_DIR/private-files.tar \ + $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