transfer from private server/git server
This commit is contained in:
30
scripts/backup.sh
Normal file
30
scripts/backup.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user