Files
donna/bin/donna-backup.sh
T
Soporte ZH Consultores 4ee32aec6d Initial commit — Donna portal v1
Setup completo del portal interno donna.aal-law.com:

* Landing público con OAuth login + grid de apps autenticado
* Flujo OAuth2 contra Mailcow (mail.aal-law.com)
* Sesiones SSO compartidas en el dominio (cookie donna_session, 8h)
* Whitelist de dominios aal-law.com / aalnlaw.com
* App "Control de Escrituras" migrada desde ZH-Consultores/control-escrituras
  (mismo schema, mismo frontend, ahora con shared Auth/Db/Config libs)
* Migraciones SQL para users, escrituras_tramites, escrituras_historial
* Caddy on :80 con rewrite extless → .php
* Backup diario MariaDB (systemd timer + script) con retención 14d
* Documentación de arquitectura en README + infra files en docs/infra
2026-05-11 19:10:36 +00:00

36 lines
863 B
Bash
Executable File

#!/usr/bin/env bash
# Donna — daily MariaDB backup with 14-day retention
set -euo pipefail
BACKUP_DIR="/var/backups/donna"
ENV_FILE="/etc/donna/donna.env"
RETENTION_DAYS=14
# shellcheck disable=SC1090
. <(grep -E '^(DB_NAME|DB_USER|DB_PASS|DB_HOST|DB_PORT)=' "$ENV_FILE")
mkdir -p "$BACKUP_DIR"
chmod 750 "$BACKUP_DIR"
STAMP=$(date +%F_%H%M%S)
OUT="$BACKUP_DIR/donna-$STAMP.sql.gz"
MYSQL_PWD="$DB_PASS" mariadb-dump \
--host="${DB_HOST:-127.0.0.1}" \
--port="${DB_PORT:-3306}" \
--user="$DB_USER" \
--single-transaction \
--quick \
--routines \
--triggers \
--events \
--default-character-set=utf8mb4 \
"$DB_NAME" \
| gzip -9 > "$OUT"
chmod 640 "$OUT"
find "$BACKUP_DIR" -type f -name 'donna-*.sql.gz' -mtime "+$RETENTION_DAYS" -delete
echo "[donna-backup] $(date -Is) wrote $OUT ($(du -h "$OUT" | cut -f1))"