diff --git a/.env.example b/.env.example index a18c3e3..d9c92e1 100644 --- a/.env.example +++ b/.env.example @@ -37,6 +37,13 @@ NTFY_USER=username:password # Obtenue depuis Uptime Kuma > Add New Monitor > Type: Push UPTIME_KUMA_PUSH_URL=http://uptime-kuma:3001/api/push/YOUR_KEY_HERE +# ============================================ +# BASES DE DONNÉES +# ============================================ + +# Mot de passe MySQL pour Seafile +SEAFILE_DB_PASSWORD=your-seafile-mysql-password + # ============================================ # OPTIONS AVANCÉES # ============================================ diff --git a/config.yaml b/config.yaml index fea77f5..db23f8e 100644 --- a/config.yaml +++ b/config.yaml @@ -76,6 +76,7 @@ commands: when: [create] run: - echo "Backup démarré" + - /etc/borgmatic/hooks/seafile-docker-mysql-backup.sh - after: action when: [create] diff --git a/hooks/seafile-docker-mysql-backup.sh b/hooks/seafile-docker-mysql-backup.sh new file mode 100644 index 0000000..d7c0487 --- /dev/null +++ b/hooks/seafile-docker-mysql-backup.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# Hook Borgmatic - Dump MySQL Seafile dockerisé avant backup + +BACKUP_DIR="/opt/seafile/backups/mysql" +DATE=$(date +%Y%m%d-%H%M) +SEAFILE_CONTAINER="seafile" # Nom de votre conteneur Seafile +MYSQL_CONTAINER="seafile-mysql" # Ou le nom de votre conteneur MySQL + +# Créer le répertoire de backup +mkdir -p "$BACKUP_DIR" + +# Charger les identifiants depuis .env si nécessaire +if [ -f /etc/borgmatic/.env ]; then + source /etc/borgmatic/.env +fi + +# Option A: Si MySQL est dans le conteneur Seafile +#docker exec "$SEAFILE_CONTAINER" mysqldump \ +# -u seafile -p"${SEAFILE_DB_PASSWORD:-votre_mot_de_passe}" \ +# --single-transaction --quick \ +# ccnet_db >"$BACKUP_DIR/ccnet_db-$DATE.sql" +# +#docker exec "$SEAFILE_CONTAINER" mysqldump \ +# -u seafile -p"${SEAFILE_DB_PASSWORD}" \ +# --single-transaction --quick \ +# seafile_db >"$BACKUP_DIR/seafile_db-$DATE.sql" +# +#docker exec "$SEAFILE_CONTAINER" mysqldump \ +# -u seafile -p"${SEAFILE_DB_PASSWORD}" \ +# --single-transaction --quick \ +# seahub_db >"$BACKUP_DIR/seahub_db-$DATE.sql" + +# Option B: Si MySQL est dans un conteneur séparé (décommentez si c'est le cas) +docker exec "$MYSQL_CONTAINER" mysqldump \ + -u seafile -p"${SEAFILE_DB_PASSWORD}" \ + --single-transaction --quick --databases \ + ccnet_db seafile_db seahub_db >"$BACKUP_DIR/seafile-all-$DATE.sql" + +# Vérifier que les dumps sont créés +if [ -f "$BACKUP_DIR/ccnet_db-$DATE.sql" ]; then + echo "✓ Dumps MySQL Seafile créés avec succès" + # Nettoyer les anciens dumps (garder 7 jours) + find "$BACKUP_DIR" -name "*.sql" -mtime +7 -delete +else + echo "✗ Erreur lors de la création des dumps MySQL" + exit 1 +fi