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
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 49s
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user