diff --git a/hooks/seafile-docker-mysql-backup.sh b/hooks/seafile-docker-mysql-backup.sh index 9b6def2..69f4163 100644 --- a/hooks/seafile-docker-mysql-backup.sh +++ b/hooks/seafile-docker-mysql-backup.sh @@ -8,7 +8,12 @@ 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 +# Log pour debug systemd +exec 1> >(logger -t seafile-backup -p user.info) +exec 2> >(logger -t seafile-backup -p user.error) + echo "[$(date)] Démarrage dump MySQL Seafile..." +echo "Contexte: USER=$USER, PWD=$PWD, HOME=$HOME" # Créer le répertoire de backup mkdir -p "$BACKUP_DIR" @@ -33,7 +38,16 @@ fi echo "✓ Utilisateur MySQL: $MYSQL_USER" echo "✓ Mot de passe MySQL défini" +# Vérifier l'accès à Docker +echo "Test accès Docker..." +if ! docker info >/dev/null 2>&1; then + echo "❌ Impossible d'accéder à Docker (socket /var/run/docker.sock)" + exit 1 +fi +echo "✓ Docker accessible" + # Vérifier que le conteneur existe et tourne +echo "Recherche du conteneur $MYSQL_CONTAINER..." if ! docker ps --format '{{.Names}}' | grep -q "^${MYSQL_CONTAINER}$"; then echo "❌ Conteneur $MYSQL_CONTAINER non trouvé ou arrêté" echo "Conteneurs disponibles:" @@ -43,16 +57,27 @@ 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 \ +DUMP_FILE="$BACKUP_DIR/seafile-all-$DATE.sql" +echo "→ Lancement du dump MySQL vers: $DUMP_FILE" +echo "→ Commande: docker exec $MYSQL_CONTAINER mysqldump -u $MYSQL_USER ..." + +# Utiliser une approche sans redirection 2>&1 qui peut bloquer +set +e # Désactiver temporairement set -e pour capturer le code de sortie +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 + ccnet_db seafile_db seahub_db > "$DUMP_FILE" 2>&1 +DUMP_EXIT_CODE=$? +set -e - SIZE=$(du -h "$BACKUP_DIR/seafile-all-$DATE.sql" | cut -f1) +echo "→ Code de sortie mysqldump: $DUMP_EXIT_CODE" + +if [ $DUMP_EXIT_CODE -eq 0 ] && [ -f "$DUMP_FILE" ] && [ -s "$DUMP_FILE" ]; then + SIZE=$(du -h "$DUMP_FILE" | cut -f1) echo "✓ Dump créé: seafile-all-$DATE.sql ($SIZE)" else - echo "❌ Échec du dump (timeout ou erreur mysqldump)" + echo "❌ Échec du dump (code sortie: $DUMP_EXIT_CODE)" + [ -f "$DUMP_FILE" ] && echo "Taille fichier: $(stat -f %z "$DUMP_FILE" 2>/dev/null || stat -c %s "$DUMP_FILE") bytes" exit 1 fi