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.
# Das verhindert zuverlässig, dass Git jemals Produktivdaten überschreibt.
DATA_ROOT="${DATA_ROOT:-/var/lib/harheimertc}"
mkdir -p "$DATA_ROOT"
DEPLOY_HOME="${DEPLOY_HOME:-${HOME:-/tmp}}"
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() {
local src="$1" # z.B. server/data
@@ -54,23 +57,25 @@ echo ""
# 1. BACKUP: Laufende Produktivdaten VOR allen Git-Operationen sichern
echo "1. Backing up current production data (pre-git)..."
# Fresh backup dir
rm -rf .backup
mkdir -p .backup
# Human readable timestamp (lokal)
BACKUP_TS="$(date +"%Y-%m-%d_%H-%M-%S")"
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'
if [ -d server/data ]; then
cp -a server/data .backup/data_backup
echo " Backed up server/data -> .backup/data_backup"
cp -a server/data "$BACKUP_DIR/server-data"
echo " Backed up server/data -> $BACKUP_DIR/server-data"
else
echo "ERROR: server/data existiert nicht. Abbruch, damit wir keine Repo-Defaults ausrollen."
exit 1
fi
mkdir -p .backup/public_data
if ls public/data/*.csv >/dev/null 2>&1; then
cp -a public/data/*.csv .backup/public_data/
echo " Backed up public/data/*.csv -> .backup/public_data/"
mkdir -p "$BACKUP_DIR/public-data"
cp -a public/data/*.csv "$BACKUP_DIR/public-data/"
echo " Backed up public/data/*.csv -> $BACKUP_DIR/public-data/"
else
echo " No public CSVs to backup (public/data/*.csv not found)"
fi
@@ -115,20 +120,20 @@ echo ""
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)
if [ ! -d .backup/data_backup ]; then
echo "ERROR: Backup-Verzeichnis .backup/data_backup fehlt. Abbruch."
if [ ! -d "$BACKUP_DIR/server-data" ]; then
echo "ERROR: Backup-Verzeichnis $BACKUP_DIR/server-data fehlt. Abbruch."
exit 1
fi
mkdir -p server/data
cp -a .backup/data_backup/. server/data/
echo " Restored server/data from backup."
cp -a "$BACKUP_DIR/server-data/." server/data/
echo " Restored server/data from backup ($BACKUP_DIR/server-data)."
# 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
cp -a .backup/public_data/*.csv public/data/
echo " Restored public/data/*.csv from backup."
cp -a "$BACKUP_DIR/public-data"/*.csv public/data/
echo " Restored public/data/*.csv from backup ($BACKUP_DIR/public-data)."
else
echo "No public CSVs to restore"
fi
@@ -139,11 +144,9 @@ if [ ! -s server/data/users.json ]; then
exit 1
fi
# 7. Cleanup backup and stash
# 7. Cleanup stash (Backups werden bewusst behalten)
echo ""
echo "7. Cleaning up backup and stash..."
rm -rf .backup
echo "7. Cleaning up stash (keeping backups in $BACKUP_ROOT)..."
# Clear the deployment stash (keep other stashes)
echo " Clearing deployment stash..."
git stash list | grep "Production deployment stash" | head -1 | cut -d: -f1 | xargs -r git stash drop