#!/bin/bash # Script de synchronisation depuis le Mac mini vers Debian # Usage: ./transfer-from-mac.sh set -e # Couleurs pour les messages RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Configuration Mac mini MAC_MINI_IP="192.168.1.34" # À configurer avec l'IP de votre Mac mini MAC_USER="pierre" DEFAULT_PATH="/Users/pierre/dev/geosector/app..." echo -e "${YELLOW}=== Configuration du transfert ===${NC}" echo "" # Demander le chemin de l'application sur le Mac mini echo -e "${YELLOW}Chemin de l'application sur le Mac mini${NC}" read -p "Chemin [$DEFAULT_PATH]: " MAC_PATH MAC_PATH=${MAC_PATH:-$DEFAULT_PATH} # Vérifier que le chemin a été modifié (ne se termine pas par ...) if [[ "$MAC_PATH" == *"..." ]]; then echo -e "${RED}Erreur: Vous devez compléter le chemin (les '...' doivent être remplacés)${NC}" echo "Exemple: /Users/pierre/dev/geosector/app" exit 1 fi # Construire la source complète SOURCE="$MAC_USER@$MAC_MINI_IP:$MAC_PATH" DESTINATION="/home/pierre/dev/geosector/app/" BACKUP_DIR="/home/pierre/dev/geosector/app-backups" BACKUP_NAME="app-backup-$(date +%Y%m%d-%H%M%S).tar.gz" echo "" echo -e "${YELLOW}=== Synchronisation depuis Mac mini ===${NC}" echo "Source: $SOURCE" echo "Destination: $DESTINATION" echo "" # Proposer de faire un backup read -p "Voulez-vous faire un backup du dossier local avant le transfert ? (O/n) " -n 1 -r echo if [[ ! $REPLY =~ ^[Nn]$ ]]; then echo -e "${YELLOW}Création du backup...${NC}" # Créer le dossier de backup s'il n'existe pas mkdir -p "$BACKUP_DIR" # Créer l'archive en excluant les dossiers inutiles tar -czf "$BACKUP_DIR/$BACKUP_NAME" \ --exclude='build' \ --exclude='.dart_tool' \ --exclude='ios/Pods' \ --exclude='ios/.symlinks' \ --exclude='macos/Pods' \ --exclude='linux/flutter/ephemeral' \ --exclude='windows/flutter/ephemeral' \ --exclude='.pub-cache' \ -C /home/pierre/dev/geosector app echo -e "${GREEN}✓ Backup créé: $BACKUP_DIR/$BACKUP_NAME${NC}" # Afficher la taille du backup BACKUP_SIZE=$(du -h "$BACKUP_DIR/$BACKUP_NAME" | cut -f1) echo "Taille du backup: $BACKUP_SIZE" echo "" fi # Demander confirmation pour le dry-run read -p "Voulez-vous d'abord faire un dry-run (simulation) ? (o/N) " -n 1 -r echo if [[ $REPLY =~ ^[Oo]$ ]]; then echo -e "${YELLOW}Mode dry-run (simulation)...${NC}" rsync -avzn --progress \ --exclude='build/' \ --exclude='.dart_tool/' \ --exclude='ios/Pods/' \ --exclude='ios/.symlinks/' \ --exclude='macos/Pods/' \ --exclude='linux/flutter/ephemeral/' \ --exclude='windows/flutter/ephemeral/' \ --exclude='.pub-cache/' \ "$SOURCE/" "$DESTINATION" echo "" read -p "Voulez-vous continuer avec le transfert réel ? (o/N) " -n 1 -r echo if [[ ! $REPLY =~ ^[Oo]$ ]]; then echo -e "${YELLOW}Transfert annulé${NC}" exit 0 fi fi echo -e "${GREEN}Démarrage du transfert...${NC}" rsync -avz --progress \ --exclude='build/' \ --exclude='.dart_tool/' \ --exclude='ios/Pods/' \ --exclude='ios/.symlinks/' \ --exclude='macos/Pods/' \ --exclude='linux/flutter/ephemeral/' \ --exclude='windows/flutter/ephemeral/' \ --exclude='.pub-cache/' \ "$SOURCE/" "$DESTINATION" echo "" echo -e "${GREEN}✓ Transfert terminé avec succès${NC}"