Files
gesthub/scripts/backup.sh
2026-08-21 09:12:02 +02:00

31 lines
1.3 KiB
Bash

#!/usr/bin/env bash
# =============================================================================
# backup.sh — Sauvegarde automatisée de GestHub (Bloc 4 - C5).
#
# Réalise un dump MariaDB (mysqldump) et une archive tar des fichiers
# uploadés, horodatés, conservés localement. Prévu pour être planifié via
# cron (ex. `0 3 * * * /opt/gesthub/scripts/backup.sh`).
# =============================================================================
set -euo pipefail
BACKUP_DIR="${BACKUP_DIR:-/opt/gesthub/backups}"
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
DB_CONTAINER="${DB_CONTAINER:-gesthub-mariadb-1}"
DB_NAME="${DB_NAME:-gesthub}"
DB_USER="${DB_USER:-flaskuser}"
UPLOADS_VOLUME_PATH="${UPLOADS_VOLUME_PATH:-/var/lib/docker/volumes/gesthub_uploads_data/_data}"
mkdir -p "$BACKUP_DIR"
echo "[backup] Dump MariaDB -> ${BACKUP_DIR}/gesthub-${TIMESTAMP}.sql.gz"
docker exec "$DB_CONTAINER" mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" \
| gzip > "${BACKUP_DIR}/gesthub-${TIMESTAMP}.sql.gz"
echo "[backup] Archive des fichiers uploadés -> ${BACKUP_DIR}/uploads-${TIMESTAMP}.tar.gz"
tar -czf "${BACKUP_DIR}/uploads-${TIMESTAMP}.tar.gz" -C "$UPLOADS_VOLUME_PATH" .
echo "[backup] Purge des sauvegardes de plus de 30 jours"
find "$BACKUP_DIR" -type f -mtime +30 -delete
echo "[backup] Terminé : ${TIMESTAMP}"