Some checks failed
Deploy Borgmatic Configuration / Deploy to Production Server (push) Has been cancelled
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>
67 lines
2.1 KiB
Bash
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
|