From a7f23c5885de4ede025b50f29653df2ce61347dc Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 15 Jan 2026 13:11:44 +0100 Subject: [PATCH] Refactor update-backend.sh script for improved .env file handling and backup process - Updated the script to securely back up .env files before deleting the old backend, ensuring no loss of environment configurations. - Enhanced the restoration process of .env files with clearer logging for success and warnings when no files are found. - Simplified the logic for copying the new backend while excluding .env files, improving clarity and maintainability of the script. --- update-backend.sh | 64 ++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/update-backend.sh b/update-backend.sh index c4b5b43..a050044 100755 --- a/update-backend.sh +++ b/update-backend.sh @@ -20,54 +20,56 @@ rm -rf tmp/ echo "Installing dependencies..." npm ci --production -# Altes Backend löschen und neues kopieren -echo "Lösche altes Backend (außer .env)..." -# Sichere .env-Dateien temporär -TEMP_ENV_DIR="/tmp/yourpart-backend-env-$$" +# Sichere .env-Dateien aus /opt/yourpart/backend temporär +TEMP_ENV_DIR="/tmp/yourpart-env-backup-$$" +echo "Sichere .env-Dateien aus /opt/yourpart/backend..." +sudo mkdir -p "$TEMP_ENV_DIR" if [ -d /opt/yourpart/backend ]; then - sudo mkdir -p "$TEMP_ENV_DIR" - sudo find /opt/yourpart/backend -maxdepth 1 -name '.env*' -type f -exec sudo cp {} "$TEMP_ENV_DIR/" \; 2>/dev/null || true - # Lösche alles im Backend-Verzeichnis - sudo rm -rf /opt/yourpart/backend/* /opt/yourpart/backend/.[!.]* 2>/dev/null || true - # Stelle .env-Dateien wieder her - if [ -d "$TEMP_ENV_DIR" ] && [ "$(ls -A $TEMP_ENV_DIR 2>/dev/null)" ]; then - sudo cp "$TEMP_ENV_DIR"/* /opt/yourpart/backend/ 2>/dev/null || true - echo "✓ .env-Dateien wurden gesichert und wiederhergestellt" + sudo find /opt/yourpart/backend -maxdepth 1 -name '.env*' -type f -exec cp {} "$TEMP_ENV_DIR/" \; 2>/dev/null || true + if [ "$(ls -A $TEMP_ENV_DIR 2>/dev/null)" ]; then + echo "✓ .env-Dateien gesichert: $(ls $TEMP_ENV_DIR)" + else + echo "⚠ Keine .env-Dateien in /opt/yourpart/backend gefunden" fi - sudo rm -rf "$TEMP_ENV_DIR" fi -echo "Erstelle Backend-Verzeichnis (falls nicht vorhanden)..." +# Altes Backend löschen +echo "Lösche altes Backend..." +sudo rm -rf /opt/yourpart/backend + +# Erstelle Backend-Verzeichnis +echo "Erstelle Backend-Verzeichnis..." sudo mkdir -p /opt/yourpart/backend -echo "Kopiere neues Backend (ohne .env-Dateien)..." -# Verwende rsync, um .env-Dateien auszuschließen +# Kopiere neues Backend (ohne .env-Dateien aus dem Quellverzeichnis) +echo "Kopiere neues Backend..." if command -v rsync &> /dev/null; then sudo rsync -av --exclude='.env*' --exclude='node_modules' . /opt/yourpart/backend/ 2>/dev/null - # node_modules separat kopieren (ohne .env) if [ -d node_modules ]; then sudo rsync -av --exclude='.env*' node_modules/ /opt/yourpart/backend/node_modules/ 2>/dev/null || \ sudo cp -r node_modules /opt/yourpart/backend/ 2>/dev/null fi else - # Fallback: Kopiere alles und lösche dann .env-Dateien + # Fallback: Kopiere alles außer .env sudo cp -r * /opt/yourpart/backend/ 2>/dev/null - sudo find /opt/yourpart/backend -name '.env*' -type f -delete 2>/dev/null || true fi -# Stelle sicher, dass .env-Dateien nicht überschrieben wurden -echo "Stelle sicher, dass .env-Dateien erhalten bleiben..." -if [ -f /opt/yourpart/backend/.env ]; then - echo "✓ Bestehende .env-Datei wurde beibehalten" +# Stelle .env-Dateien wieder her +echo "Stelle .env-Dateien wieder her..." +if [ -d "$TEMP_ENV_DIR" ] && [ "$(ls -A $TEMP_ENV_DIR 2>/dev/null)" ]; then + sudo cp "$TEMP_ENV_DIR"/.env* /opt/yourpart/backend/ 2>/dev/null || true + echo "✓ .env-Dateien wiederhergestellt" else - echo "⚠ Keine .env-Datei im Zielverzeichnis gefunden" - # Falls .env im Quellverzeichnis existiert, kopiere sie nur wenn sie im Ziel nicht existiert - if [ -f .env ]; then - echo "Kopiere .env-Datei (nur wenn nicht vorhanden)..." - sudo cp .env /opt/yourpart/backend/ - sudo chown yourpart:yourpart /opt/yourpart/backend/.env - sudo chmod 600 /opt/yourpart/backend/.env - fi + echo "⚠ Keine .env-Dateien zum Wiederherstellen vorhanden" +fi +sudo rm -rf "$TEMP_ENV_DIR" + +# Prüfe ob .env vorhanden ist +if [ -f /opt/yourpart/backend/.env ]; then + echo "✓ .env-Datei ist vorhanden" +else + echo "⚠ WARNUNG: Keine .env-Datei in /opt/yourpart/backend gefunden!" + echo " Bitte manuell erstellen: sudo nano /opt/yourpart/backend/.env" fi # Berechtigungen setzen