#!/bin/bash # scripts/restore.sh - Restauration d'un backup set -e if [ -z "$1" ]; then echo "Usage: $0 " exit 1 fi BACKUP_FILE="$1" if [ ! -f "$BACKUP_FILE" ]; then echo "❌ Fichier introuvable: $BACKUP_FILE" exit 1 fi echo "⚠️ ATTENTION: Cette opération va écraser les données actuelles !" read -p "Continuer? (yes/no): " confirm if [ "$confirm" != "yes" ]; then echo "Annulé." exit 0 fi # Extraire le backup TEMP_DIR=$(mktemp -d) echo "📂 Extraction vers $TEMP_DIR..." tar -xzf "$BACKUP_FILE" -C "$TEMP_DIR" BACKUP_DIR=$(ls -1 "$TEMP_DIR" | head -n1) # Arrêter les services echo "⏹️ Arrêt des services..." docker-compose down # Restaurer la base de données echo "💾 Restauration de la base de données..." docker-compose up -d db sleep 10 docker-compose exec -T db mysql \ -u"$MYSQL_USER" \ -p"$MYSQL_PASSWORD" \ "$MYSQL_DATABASE" \ < "$TEMP_DIR/$BACKUP_DIR/database.sql" # Restaurer les fichiers echo "📁 Restauration des fichiers..." tar -xzf "$TEMP_DIR/$BACKUP_DIR/config.tar.gz" -C ./data/config tar -xzf "$TEMP_DIR/$BACKUP_DIR/data.tar.gz" -C ./data/data if [ -f "$TEMP_DIR/$BACKUP_DIR/apps.tar.gz" ]; then tar -xzf "$TEMP_DIR/$BACKUP_DIR/apps.tar.gz" -C ./data/custom_apps fi # Redémarrer echo "▶️ Redémarrage des services..." docker-compose up -d # Réparer et scanner echo "🔧 Réparation..." sleep 30 docker-compose exec -u www-data nextcloud php occ maintenance:repair docker-compose exec -u www-data nextcloud php occ files:scan --all # Nettoyer rm -rf "$TEMP_DIR" echo "✅ Restauration terminée !"