Refactor deployment script to improve data management by introducing configurable backup and restore paths, enhancing error handling, and ensuring persistent data storage. Update backup processes to create timestamped directories for better organization.
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 49s

This commit is contained in:
Torsten Schulz (local)
2026-01-07 17:54:49 +01:00
parent 225e930e4c
commit 9bae707473

View File

@@ -20,8 +20,11 @@ fi
# Optional (empfohlen): Persistente Daten außerhalb des Git-Repos halten und per Symlink einbinden. # Optional (empfohlen): Persistente Daten außerhalb des Git-Repos halten und per Symlink einbinden.
# Das verhindert zuverlässig, dass Git jemals Produktivdaten überschreibt. # Das verhindert zuverlässig, dass Git jemals Produktivdaten überschreibt.
DATA_ROOT="${DATA_ROOT:-/var/lib/harheimertc}" DEPLOY_HOME="${DEPLOY_HOME:-${HOME:-/tmp}}"
mkdir -p "$DATA_ROOT" DATA_ROOT="${DATA_ROOT:-$DEPLOY_HOME/harheimertc-data}"
BACKUP_ROOT="${BACKUP_ROOT:-$DEPLOY_HOME/harheimertc-backups}"
mkdir -p "$DATA_ROOT" "$BACKUP_ROOT"
ensure_symlink_dir() { ensure_symlink_dir() {
local src="$1" # z.B. server/data local src="$1" # z.B. server/data
@@ -54,23 +57,25 @@ echo ""
# 1. BACKUP: Laufende Produktivdaten VOR allen Git-Operationen sichern # 1. BACKUP: Laufende Produktivdaten VOR allen Git-Operationen sichern
echo "1. Backing up current production data (pre-git)..." echo "1. Backing up current production data (pre-git)..."
# Fresh backup dir # Human readable timestamp (lokal)
rm -rf .backup BACKUP_TS="$(date +"%Y-%m-%d_%H-%M-%S")"
mkdir -p .backup BACKUP_DIR="$BACKUP_ROOT/backup_$BACKUP_TS"
mkdir -p "$BACKUP_DIR"
echo " Backup directory: $BACKUP_DIR"
# Backup server data (JSON) und CSVs immer vom Dateisystem, nicht aus 'stash' # Backup server data (JSON) und CSVs immer vom Dateisystem, nicht aus 'stash'
if [ -d server/data ]; then if [ -d server/data ]; then
cp -a server/data .backup/data_backup cp -a server/data "$BACKUP_DIR/server-data"
echo " Backed up server/data -> .backup/data_backup" echo " Backed up server/data -> $BACKUP_DIR/server-data"
else else
echo "ERROR: server/data existiert nicht. Abbruch, damit wir keine Repo-Defaults ausrollen." echo "ERROR: server/data existiert nicht. Abbruch, damit wir keine Repo-Defaults ausrollen."
exit 1 exit 1
fi fi
mkdir -p .backup/public_data
if ls public/data/*.csv >/dev/null 2>&1; then if ls public/data/*.csv >/dev/null 2>&1; then
cp -a public/data/*.csv .backup/public_data/ mkdir -p "$BACKUP_DIR/public-data"
echo " Backed up public/data/*.csv -> .backup/public_data/" cp -a public/data/*.csv "$BACKUP_DIR/public-data/"
echo " Backed up public/data/*.csv -> $BACKUP_DIR/public-data/"
else else
echo " No public CSVs to backup (public/data/*.csv not found)" echo " No public CSVs to backup (public/data/*.csv not found)"
fi fi
@@ -115,20 +120,20 @@ echo ""
echo "6. Restoring production data..." echo "6. Restoring production data..."
# Stelle server/data vollständig wieder her (inkl. config.json, users.json, news.json, sessions.json, members.json, membership-applications) # Stelle server/data vollständig wieder her (inkl. config.json, users.json, news.json, sessions.json, members.json, membership-applications)
if [ ! -d .backup/data_backup ]; then if [ ! -d "$BACKUP_DIR/server-data" ]; then
echo "ERROR: Backup-Verzeichnis .backup/data_backup fehlt. Abbruch." echo "ERROR: Backup-Verzeichnis $BACKUP_DIR/server-data fehlt. Abbruch."
exit 1 exit 1
fi fi
mkdir -p server/data mkdir -p server/data
cp -a .backup/data_backup/. server/data/ cp -a "$BACKUP_DIR/server-data/." server/data/
echo " Restored server/data from backup." echo " Restored server/data from backup ($BACKUP_DIR/server-data)."
# Stelle alle CSVs wieder her # Stelle alle CSVs wieder her
if ls .backup/public_data/*.csv >/dev/null 2>&1; then if ls "$BACKUP_DIR/public-data"/*.csv >/dev/null 2>&1; then
mkdir -p public/data mkdir -p public/data
cp -a .backup/public_data/*.csv public/data/ cp -a "$BACKUP_DIR/public-data"/*.csv public/data/
echo " Restored public/data/*.csv from backup." echo " Restored public/data/*.csv from backup ($BACKUP_DIR/public-data)."
else else
echo "No public CSVs to restore" echo "No public CSVs to restore"
fi fi
@@ -139,11 +144,9 @@ if [ ! -s server/data/users.json ]; then
exit 1 exit 1
fi fi
# 7. Cleanup backup and stash # 7. Cleanup stash (Backups werden bewusst behalten)
echo "" echo ""
echo "7. Cleaning up backup and stash..." echo "7. Cleaning up stash (keeping backups in $BACKUP_ROOT)..."
rm -rf .backup
# Clear the deployment stash (keep other stashes) # Clear the deployment stash (keep other stashes)
echo " Clearing deployment stash..." echo " Clearing deployment stash..."
git stash list | grep "Production deployment stash" | head -1 | cut -d: -f1 | xargs -r git stash drop git stash list | grep "Production deployment stash" | head -1 | cut -d: -f1 | xargs -r git stash drop