Files
e-ticket/ansible/backup.sh.j2
Serreau Jovann 207e985821 Add Messenger monitor command, uploads backup, hourly cron
- MonitorMessengerCommand: checks failed messages, emails admin with details
- Backup script: add /public/uploads tar.gz alongside DB dump
- Ansible: cron every hour for messenger monitor
- TASK_CHECKUP: mark infrastructure tasks done

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 19:55:35 +01:00

35 lines
1.3 KiB
Django/Jinja

#!/bin/bash
# E-Ticket database backup script
# Runs every 30 minutes via cron
BACKUP_DIR="/var/backups/e-ticket"
DATE=$(date +%Y%m%d_%H%M%S)
FILENAME="e_ticket_${DATE}.sql.gz"
KEEP_DAYS=1
# Dump database via Docker
docker compose -f /var/www/e-ticket/docker-compose-prod.yml exec -T database pg_dump -U {{ vault_postgres_user }} {{ vault_postgres_db }} | gzip > "${BACKUP_DIR}/${FILENAME}"
# Check if backup was created
if [ -f "${BACKUP_DIR}/${FILENAME}" ] && [ -s "${BACKUP_DIR}/${FILENAME}" ]; then
echo "[$(date)] DB Backup OK: ${FILENAME} ($(du -h "${BACKUP_DIR}/${FILENAME}" | cut -f1))"
else
echo "[$(date)] ERROR: DB Backup failed"
exit 1
fi
# Backup uploads
UPLOADS_FILENAME="uploads_${DATE}.tar.gz"
tar -czf "${BACKUP_DIR}/${UPLOADS_FILENAME}" -C /var/www/e-ticket/public uploads 2>/dev/null
if [ -f "${BACKUP_DIR}/${UPLOADS_FILENAME}" ]; then
echo "[$(date)] Uploads Backup OK: ${UPLOADS_FILENAME} ($(du -h "${BACKUP_DIR}/${UPLOADS_FILENAME}" | cut -f1))"
else
echo "[$(date)] WARNING: Uploads backup failed"
fi
# Remove backups older than KEEP_DAYS days
find "${BACKUP_DIR}" -name "e_ticket_*.sql.gz" -mtime +${KEEP_DAYS} -delete
find "${BACKUP_DIR}" -name "uploads_*.tar.gz" -mtime +${KEEP_DAYS} -delete
echo "[$(date)] Cleaned backups older than ${KEEP_DAYS} days"