2026-06-09 15:27:39 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
# =============================================
|
2026-06-09 15:59:53 +02:00
|
|
|
# ERPNext Universal S3 Restore Script
|
2026-06-09 16:28:11 +02:00
|
|
|
# Für Timme Hosting, Hetzner, AWS etc.
|
2026-06-09 15:27:39 +02:00
|
|
|
# =============================================
|
2026-06-09 16:28:11 +02:00
|
|
|
|
2026-06-09 15:49:53 +02:00
|
|
|
# ================== KONFIGURATION ==================
|
2026-06-09 16:28:11 +02:00
|
|
|
SITE="xxx" # Sitename
|
|
|
|
|
S3_ENDPOINT="https://s3.timmehosting.de" # Serveradresse (mit https://)
|
|
|
|
|
S3_BUCKET="dein-bucket-name" # Bucket
|
2026-06-09 15:59:53 +02:00
|
|
|
S3_ACCESS_KEY="" # Access Key
|
|
|
|
|
S3_SECRET_KEY="" # Secret Key
|
2026-06-09 16:28:11 +02:00
|
|
|
S3_REGION="eu-central-1"
|
2026-06-09 15:27:39 +02:00
|
|
|
|
2026-06-09 16:28:11 +02:00
|
|
|
ENCRYPTION_KEY="" # Encryption Key
|
2026-06-09 15:49:53 +02:00
|
|
|
# ===================================================
|
2026-06-09 15:27:39 +02:00
|
|
|
|
2026-06-09 16:28:11 +02:00
|
|
|
# SITE kann als Parameter übergeben werden
|
|
|
|
|
if [ "$1" != "" ]; then
|
|
|
|
|
SITE="$1"
|
|
|
|
|
fi
|
|
|
|
|
|
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 "=================================================="
|
|
|
|
|
|
2026-06-09 16:28:11 +02:00
|
|
|
# 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
|
2026-06-09 15:27:39 +02:00
|
|
|
|
2026-06-09 16:28:11 +02:00
|
|
|
cd ~/frappe-bench
|
2026-06-09 15:49:53 +02:00
|
|
|
|
2026-06-09 16:28:11 +02:00
|
|
|
# 1. Neueste Backup-Dateien suchen und herunterladen
|
|
|
|
|
echo "1. Lade neuestes Backup aus S3 herunter..."
|
2026-06-09 15:49:53 +02:00
|
|
|
|
|
|
|
|
LOCAL_BACKUP_DIR=~/backups/$(date +%Y-%m-%d)_s3_restore
|
|
|
|
|
mkdir -p $LOCAL_BACKUP_DIR
|
|
|
|
|
|
2026-06-09 16:28:11 +02:00
|
|
|
# Neueste Dateien herunterladen (nach Timestamp sortiert)
|
|
|
|
|
aws s3 cp s3://$S3_BUCKET/ $LOCAL_BACKUP_DIR/ --recursive \
|
2026-06-09 15:59:53 +02:00
|
|
|
--endpoint-url $S3_ENDPOINT \
|
|
|
|
|
--aws-access-key-id $S3_ACCESS_KEY \
|
2026-06-09 16:28:11 +02:00
|
|
|
--aws-secret-access-key $S3_SECRET_KEY \
|
|
|
|
|
--exclude "*" \
|
|
|
|
|
--include "*database-enc.sql.gz" \
|
|
|
|
|
--include "*files-enc.tar" \
|
|
|
|
|
--include "*private-files-enc.tar"
|
2026-06-09 15:49:53 +02:00
|
|
|
|
2026-06-09 16:28:11 +02:00
|
|
|
echo " → Download abgeschlossen. Dateien in: $LOCAL_BACKUP_DIR"
|
2026-06-09 15:49:53 +02:00
|
|
|
|
|
|
|
|
# 2. Restore durchführen
|
|
|
|
|
echo "2. Restore wird durchgeführt..."
|
2026-06-09 16:28:11 +02:00
|
|
|
|
2026-06-09 15:27:39 +02:00
|
|
|
bench --site $SITE restore \
|
2026-06-09 16:28:11 +02:00
|
|
|
$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 \
|
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)"
|