diff --git a/scripts/backup.sh b/scripts/backup.sh index 65d32b0..554a91b 100755 --- a/scripts/backup.sh +++ b/scripts/backup.sh @@ -100,10 +100,13 @@ DATA_SIZE=$(docker-compose exec -T nextcloud du -sb \ --exclude='*/thumbnails' \ /var/www/html/data 2>/dev/null | awk '{print $1}' || echo "0") -DB_SIZE=$(docker-compose exec -T db du -sb /var/lib/mysql 2>/dev/null | awk '{print $1}' || echo "0") +# Note: On n'inclut pas la DB car mysqldump est beaucoup plus petit que les fichiers MySQL bruts +# Typiquement: fichiers MySQL = 650MB → dump SQL = 500KB (compression ~99%) +# On ajoute juste 10MB fixe pour DB + config + apps (généralement < 1MB au final) +DB_ESTIMATE=10485760 # 10MB -# Additionner avec 20% de marge pour la compression et les autres fichiers -REQUIRED_SPACE=$(echo "$DATA_SIZE + $DB_SIZE" | awk '{total=$1+$3; print int(total*1.2)}') +# Additionner avec 20% de marge +REQUIRED_SPACE=$(echo "$DATA_SIZE + $DB_ESTIMATE" | awk '{total=$1+$3; print int(total*1.2)}') if [ -z "$REQUIRED_SPACE" ] || [ "$REQUIRED_SPACE" = "0" ]; then log "WARN" "Impossible de calculer l'espace requis, estimation à 500MB" @@ -117,9 +120,11 @@ if [ -z "$AVAILABLE_SPACE" ]; then exit 1 fi -# Calculer estimation avec compression (ratio moyen ~90%) +# Calculer estimation avec compression +# Note: Nextcloud a beaucoup de fichiers déjà compressés (images, PDFs) +# donc la compression gzip est peu efficace (~30% au lieu de 90%) if [ "$REQUIRED_SPACE" -gt 0 ] 2>/dev/null; then - ESTIMATED_COMPRESSED=$((REQUIRED_SPACE / 10)) + ESTIMATED_COMPRESSED=$((REQUIRED_SPACE * 7 / 10)) # 70% de la taille (30% de compression) log "INFO" "Espace requis (non compressé + 20%): $(numfmt --to=iec-i --suffix=B "$REQUIRED_SPACE" 2>/dev/null || echo "$REQUIRED_SPACE bytes")" log "INFO" "Espace estimé après compression: $(numfmt --to=iec-i --suffix=B "$ESTIMATED_COMPRESSED" 2>/dev/null || echo "$ESTIMATED_COMPRESSED bytes")" else