1fedd683e0
Stand: agent-06 (Audit-Log), agent-05 (Krankmeldung), agent-07 Phase 1 (Personalnummer), Busylight-Pull-Integration, TOTP/2FA, Abwesenheiten, Zeiterfassung, Kiosk-Grundgerüst. Migrations 0001–0023 deployed auf 192.168.1.137 + .164. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
42 lines
1.7 KiB
Bash
42 lines
1.7 KiB
Bash
#!/bin/bash
|
|
# TimeMaster Backup Script
|
|
# Sichert PostgreSQL-Datenbank und pip-Paketliste
|
|
set -euo pipefail
|
|
|
|
BACKUP_DIR="/tank/backup"
|
|
DB_NAME="timemaster_db"
|
|
DB_USER="timemaster"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
RETENTION_DAYS=30
|
|
|
|
echo "[$(date)] Starting TimeMaster backup..."
|
|
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# PostgreSQL dump (custom format, komprimiert) — peer auth erfordert su
|
|
su -c "pg_dump -Fc $DB_NAME" postgres > "$BACKUP_DIR/db_$TIMESTAMP.dump"
|
|
SIZE=$(du -sh "$BACKUP_DIR/db_$TIMESTAMP.dump" | cut -f1)
|
|
echo "[$(date)] DB backup: db_$TIMESTAMP.dump ($SIZE)"
|
|
|
|
# pip freeze für venv (für venv-Wiederherstellung nach Python-Upgrade)
|
|
/opt/timemaster/backend/venv/bin/pip freeze > "$BACKUP_DIR/requirements_frozen_$TIMESTAMP.txt"
|
|
echo "[$(date)] pip freeze: requirements_frozen_$TIMESTAMP.txt"
|
|
|
|
# Alembic-Version sichern
|
|
su -c "psql $DB_NAME -t -c 'SELECT version_num FROM alembic_version;'" postgres 2>/dev/null \
|
|
> "$BACKUP_DIR/alembic_version_$TIMESTAMP.txt" || true
|
|
|
|
# PostgreSQL-Version sichern (wichtig für pg_upgrade-Erkennung)
|
|
su -c "psql -t -c 'SELECT version();'" postgres 2>/dev/null \
|
|
| head -1 | xargs > "$BACKUP_DIR/pg_version_$TIMESTAMP.txt" || true
|
|
|
|
# Alte Backups löschen (älter als RETENTION_DAYS)
|
|
find "$BACKUP_DIR" -name "db_*.dump" -mtime +$RETENTION_DAYS -delete
|
|
find "$BACKUP_DIR" -name "requirements_frozen_*.txt" -mtime +$RETENTION_DAYS -delete
|
|
find "$BACKUP_DIR" -name "alembic_version_*.txt" -mtime +$RETENTION_DAYS -delete
|
|
find "$BACKUP_DIR" -name "pg_version_*.txt" -mtime +$RETENTION_DAYS -delete
|
|
|
|
echo "[$(date)] Backup complete. Current backups:"
|
|
ls -lh "$BACKUP_DIR"
|
|
echo "[$(date)] Total size: $(du -sh "$BACKUP_DIR" | cut -f1)"
|