#!/bin/bash # ═══════════════════════════════════════════════════════════ # EFFI - Script de synchronisation depuis la production # Usage: ./sync-from-production.sh # Ce script récupère la config de effi-server et prépare le commit # ═══════════════════════════════════════════════════════════ set -e # Configuration EFFI_SERVER="effi@192.168.1.27" REMOTE_PATH="~/effi" LOCAL_PATH="." # Couleurs RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo "═════════════════════════════════════════════════════════════" echo " 🔄 SYNCHRONISATION DEPUIS LA PRODUCTION" echo " Serveur: $EFFI_SERVER" echo " Date: $(date)" echo "═════════════════════════════════════════════════════════════" echo "" # Vérifier qu'on est dans le dépôt Git if [ ! -d ".git" ]; then echo -e "${RED}❌ Erreur: Ce script doit être exécuté dans le dépôt Git Effi${NC}" echo "Exécutez: cd ~/Documents/OpenCode/Projets/Effi" exit 1 fi # Vérifier la connexion SSH echo -e "${BLUE}🔌 Vérification connexion SSH...${NC}" if ! ssh -q -o BatchMode=yes -o ConnectTimeout=5 $EFFI_SERVER exit 2>/dev/null; then echo -e "${RED}❌ Impossible de se connecter à $EFFI_SERVER${NC}" echo "Vérifiez:" echo " 1. Que le serveur est allumé" echo " 2. Que votre clé SSH est configurée" echo " 3. L'adresse IP ($EFFI_SERVER)" exit 1 fi echo -e "${GREEN}✓ Connexion SSH OK${NC}" echo "" # Sauvegarder le .env local s'il existe if [ -f ".env" ]; then cp .env .env.local.backup echo -e "${BLUE}💾 Sauvegarde du .env local créée (.env.local.backup)${NC}" fi # Récupérer docker-compose.yml echo -e "${BLUE}📥 Récupération de docker-compose.yml...${NC}" scp $EFFI_SERVER:$REMOTE_PATH/docker-compose.yml $LOCAL_PATH/ echo -e "${GREEN}✓ docker-compose.yml récupéré${NC}" # Récupérer .env (on le renomme pour ne pas écraser accidentellement) echo -e "${BLUE}📥 Récupération de .env (anonymisé)...${NC}" scp $EFFI_SERVER:$REMOTE_PATH/.env $LOCAL_PATH/.env.production 2>/dev/null || echo -e "${YELLOW}⚠️ Pas de .env sur le serveur${NC}" # Anonymiser le .env récupéré if [ -f ".env.production" ]; then echo -e "${BLUE}🔒 Anonymisation des valeurs sensibles...${NC}" # Remplacer les valeurs par des placeholders sed -i 's/=.*/=[valeur_production]/g' .env.production echo -e "${GREEN}✓ .env.production créé (valeurs masquées)${NC}" fi # Récupérer les scripts s'ils existent echo -e "${BLUE}📥 Récupération des scripts...${NC}" scp $EFFI_SERVER:$REMOTE_PATH/scripts/*.sh $LOCAL_PATH/scripts/ 2>/dev/null || echo -e "${YELLOW}⚠️ Pas de scripts sur le serveur${NC}" # Vérifier les différences echo "" echo "═════════════════════════════════════════════════════════════" echo " 📊 DIFFÉRENCES DÉTECTÉES" echo "═════════════════════════════════════════════════════════════" echo "" if git diff --quiet HEAD; then echo -e "${GREEN}✓ Aucune différence avec le dépôt${NC}" echo "La production est déjà synchronisée avec Gitea." exit 0 else echo -e "${YELLOW}⚠️ Différences trouvées:${NC}" git diff --stat echo "" echo -e "${BLUE}Détails des changements:${NC}" git diff --color-words fi echo "" echo "═════════════════════════════════════════════════════════════" echo " 📝 PROCHAINES ÉTAPES" echo "═════════════════════════════════════════════════════════════" echo "" echo "Les fichiers ont été récupérés depuis la production." echo "" echo "Pour finaliser la synchronisation:" echo "" echo " 1. ${YELLOW}Vérifiez${NC} les changements:" echo " git diff" echo "" echo " 2. ${YELLOW}Mettez à jour${NC} .env.example si de nouvelles variables:" echo " diff .env.example .env.production" echo "" echo " 3. ${YELLOW}Commitez${NC} les changements:" echo " git add docker-compose.yml" echo " git commit -m \"Sync: Mise à jour depuis production - $(date +%Y-%m-%d)\"" echo "" echo " 4. ${YELLOW}Poussez${NC} sur Gitea:" echo " git push" echo "" echo "═════════════════════════════════════════════════════════════" # Restaurer le .env local if [ -f ".env.local.backup" ]; then mv .env.local.backup .env echo -e "${GREEN}✓ Votre .env local a été restauré${NC}" fi exit 0