Files
erpnext-Restore-Script/restore-erpnext.sh
T

72 lines
2.6 KiB
Bash
Raw Normal View History

2026-06-09 15:27:39 +02:00
#!/bin/bash
# =============================================
2026-06-09 15:59:53 +02:00
# ERPNext Universal S3 Restore Script
# Funktioniert mit AWS S3 + Timme Hosting + Hetzner + Backblaze etc.
2026-06-09 15:27:39 +02:00
# =============================================
2026-06-09 15:49:53 +02:00
# ================== KONFIGURATION ==================
2026-06-09 15:59:53 +02:00
SITE="xxx" # ERPNext Site eintragen
2026-06-09 16:06:49 +02:00
S3_ENDPOINT=" " # Adresse des S3 Servers (mit https://)
2026-06-09 15:59:53 +02:00
S3_BUCKET="der-bucket-name" # Bucket-Name
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
2026-06-09 15:27:39 +02:00
2026-06-09 15:59:53 +02:00
BACKUP_FOLDER="" # Leer lassen = neuesten Ordner automatisch
ENCRYPTION_KEY="" # Dein Backup Encryption Key
2026-06-09 15:49:53 +02:00
# ===================================================
2026-06-09 15:27:39 +02:00
2026-06-09 15:59:53 +02:00
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!"
2026-06-09 15:27:39 +02:00
exit 1
fi
2026-06-09 15:59:53 +02:00
echo "=== ERPNext Universal S3 Restore Start ==="
2026-06-09 15:27:39 +02:00
echo "Site: $SITE"
2026-06-09 15:59:53 +02:00
echo "Endpoint: $S3_ENDPOINT"
2026-06-09 15:49:53 +02:00
echo "Bucket: $S3_BUCKET"
2026-06-09 15:27:39 +02:00
echo "Startzeit: $(date)"
echo "=================================================="
cd ~/frappe-bench
2026-06-09 15:59:53 +02:00
# 1. Neueste Backup-Version herunterladen
echo "1. Lade neuestes Backup herunter..."
2026-06-09 15:49:53 +02:00
if [ -z "$BACKUP_FOLDER" ]; then
2026-06-09 15:59:53 +02:00
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)
2026-06-09 15:49:53 +02:00
BACKUP_FOLDER="s3://$S3_BUCKET/$LATEST"
fi
LOCAL_BACKUP_DIR=~/backups/$(date +%Y-%m-%d)_s3_restore
mkdir -p $LOCAL_BACKUP_DIR
2026-06-09 15:59:53 +02:00
echo " → Lade herunter nach: $LOCAL_BACKUP_DIR"
aws s3 cp $BACKUP_FOLDER/ $LOCAL_BACKUP_DIR/ --recursive \
--endpoint-url $S3_ENDPOINT \
--aws-access-key-id $S3_ACCESS_KEY \
--aws-secret-access-key $S3_SECRET_KEY
2026-06-09 15:49:53 +02:00
echo " → Download abgeschlossen."
# 2. Restore durchführen
echo "2. Restore wird durchgeführt..."
2026-06-09 15:27:39 +02:00
bench --site $SITE restore \
2026-06-09 15:49:53 +02:00
$LOCAL_BACKUP_DIR/database.sql.gz \
--with-public-files $LOCAL_BACKUP_DIR/files.tar \
--with-private-files $LOCAL_BACKUP_DIR/private-files.tar \
2026-06-09 15:27:39 +02:00
--encryption-key "$ENCRYPTION_KEY" \
--force
2026-06-09 15:49:53 +02:00
# 3. Nacharbeiten
echo "3. Migration, Cache und Restart..."
2026-06-09 15:27:39 +02:00
bench --site $SITE migrate
bench --site $SITE clear-cache
bench build
bench restart
echo "=================================================="
2026-06-09 15:59:53 +02:00
echo "Restore erfolgreich abgeschlossen!"
echo "Endzeit: $(date)"