Files
agence66-borgmatic/hooks/seafile-docker-mysql-backup.sh
BeauTroll 0ae8cb9e0e
Some checks failed
Deploy Borgmatic Configuration / Deploy to Production Server (push) Has been cancelled
Fix Seafile MySQL dump authentication by using root user
Update the Seafile MySQL dump hook to use the root user by default
instead of seafile user, which resolves authentication issues. Add
SEAFILE_MYSQL_USER environment variable for user customization.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 13:45:10 +01:00

67 lines
2.1 KiB
Bash

#!/bin/bash
# Hook Borgmatic - Dump MySQL Seafile dockerisé avant backup
set -e # Arrêter en cas d'erreur
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
echo "[$(date)] Démarrage dump MySQL Seafile..."
# Créer le répertoire de backup
mkdir -p "$BACKUP_DIR"
echo "✓ Répertoire de backup: $BACKUP_DIR"
# Charger les identifiants depuis .env
if [ -f /etc/borgmatic/.env ]; then
source /etc/borgmatic/.env
echo "✓ Variables chargées depuis /etc/borgmatic/.env"
else
echo "⚠️ /etc/borgmatic/.env non trouvé"
fi
# Utilisateur MySQL (par défaut root, configurable via .env)
MYSQL_USER="${SEAFILE_MYSQL_USER:-root}"
# Vérifier que le mot de passe est défini
if [ -z "$SEAFILE_DB_PASSWORD" ]; then
echo "❌ SEAFILE_DB_PASSWORD n'est pas défini dans /etc/borgmatic/.env"
exit 1
fi
echo "✓ Utilisateur MySQL: $MYSQL_USER"
echo "✓ Mot de passe MySQL défini"
# Vérifier que le conteneur existe et tourne
if ! docker ps --format '{{.Names}}' | grep -q "^${MYSQL_CONTAINER}$"; then
echo "❌ Conteneur $MYSQL_CONTAINER non trouvé ou arrêté"
echo "Conteneurs disponibles:"
docker ps --format " - {{.Names}}"
exit 1
fi
echo "✓ Conteneur $MYSQL_CONTAINER trouvé"
# Dump unique avec toutes les bases
echo "→ Dump des bases Seafile..."
if timeout 300 docker exec "$MYSQL_CONTAINER" mysqldump \
-u "$MYSQL_USER" -p"${SEAFILE_DB_PASSWORD}" \
--single-transaction --quick --databases \
ccnet_db seafile_db seahub_db > "$BACKUP_DIR/seafile-all-$DATE.sql" 2>&1; then
SIZE=$(du -h "$BACKUP_DIR/seafile-all-$DATE.sql" | cut -f1)
echo "✓ Dump créé: seafile-all-$DATE.sql ($SIZE)"
else
echo "❌ Échec du dump (timeout ou erreur mysqldump)"
exit 1
fi
# Nettoyer les anciens dumps (garder 7 jours)
DELETED=$(find "$BACKUP_DIR" -name "*.sql" -mtime +7 -delete -print | wc -l)
if [ "$DELETED" -gt 0 ]; then
echo "🗑️ $DELETED ancien(s) dump(s) supprimé(s)"
fi
echo "[$(date)] ✅ Dump MySQL Seafile terminé avec succès"
exit 0