31 lines
1.3 KiB
Bash
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}"
|