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

91 lines
2.8 KiB
Bash

#!/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)"