#!/bin/bash # Vérification des arguments if [ $# -ne 2 ]; then echo "Usage: $0 " echo "Example: $0 dva-geo rca-geo" exit 1 fi HOST_IP="195.154.80.116" HOST_USER=root HOST_KEY=/Users/pierre/.ssh/id_rsa_mbpi HOST_PORT=22 SOURCE_CONTAINER=$1 DEST_CONTAINER=$2 WEB_PATH="/var/www/geosector/web" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") BACKUP_DIR="${WEB_PATH}_backup_${TIMESTAMP}" PROJECT="default" echo "🔄 Copie du site web Svelte de $SOURCE_CONTAINER vers $DEST_CONTAINER (projet: $PROJECT)" # Vérifier si les containers existent echo "🔍 Vérification des containers..." ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus info $SOURCE_CONTAINER --project $PROJECT" > /dev/null 2>&1 if [ $? -ne 0 ]; then echo "❌ Erreur: Le container source $SOURCE_CONTAINER n'existe pas ou n'est pas accessible dans le projet $PROJECT" exit 1 fi ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus info $DEST_CONTAINER --project $PROJECT" > /dev/null 2>&1 if [ $? -ne 0 ]; then echo "❌ Erreur: Le container destination $DEST_CONTAINER n'existe pas ou n'est pas accessible dans le projet $PROJECT" exit 1 fi # Créer une sauvegarde du dossier de destination avant de le remplacer echo "📦 Création d'une sauvegarde sur $DEST_CONTAINER..." # Vérifier si le dossier WEB existe ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- test -d $WEB_PATH" if [ $? -eq 0 ]; then # Le dossier existe, créer une sauvegarde ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- cp -r $WEB_PATH $BACKUP_DIR" echo "✅ Sauvegarde créée dans $BACKUP_DIR" else echo "⚠️ Le dossier WEB n'existe pas sur la destination" fi # Copier le dossier WEB entre les containers echo "📋 Copie des fichiers en cours..." # Approche directe: utiliser incus copy pour copier directement entre containers echo "📤 Transfert direct entre containers..." # Nettoyer le dossier de destination ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- rm -rf $WEB_PATH" ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- mkdir -p $WEB_PATH" # Copier directement du container source vers le container destination ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $SOURCE_CONTAINER --project $PROJECT -- tar -cf - -C $WEB_PATH . | incus exec $DEST_CONTAINER --project $PROJECT -- tar -xf - -C $WEB_PATH" if [ $? -ne 0 ]; then echo "❌ Erreur lors du transfert direct entre containers" echo "⚠️ Tentative de restauration de la sauvegarde..." # Vérifier si la sauvegarde existe ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- test -d $BACKUP_DIR" if [ $? -eq 0 ]; then # La sauvegarde existe, la restaurer ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- cp -r $BACKUP_DIR $WEB_PATH" echo "✅ Restauration réussie" else echo "❌ Échec de la restauration" fi exit 1 fi # Changer le propriétaire et les permissions des fichiers echo "👤 Application des droits et permissions pour tous les fichiers..." # Définir le propriétaire pour tous les fichiers ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- chown -R nginx:nginx $WEB_PATH" # Appliquer les permissions de base pour les dossiers (755) ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- find $WEB_PATH -type d -exec chmod 755 {} \;" # Appliquer les permissions pour les fichiers (644) ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- find $WEB_PATH -type f -exec chmod 644 {} \;" echo "✅ Propriétaire et permissions appliqués avec succès" # Vérifier la copie echo "✅ Vérification de la copie..." ssh -i $HOST_KEY -p $HOST_PORT $HOST_USER@$HOST_IP "incus exec $DEST_CONTAINER --project $PROJECT -- test -d $WEB_PATH" if [ $? -eq 0 ]; then echo "✅ Copie réussie" else echo "❌ Erreur: Le dossier WEB n'a pas été copié correctement" fi echo "✅ Opération terminée! Le site web Svelte a été copié de $SOURCE_CONTAINER vers $DEST_CONTAINER" echo "📁 Une sauvegarde a été créée dans $BACKUP_DIR sur $DEST_CONTAINER" echo "👤 Les fichiers appartiennent maintenant à l'utilisateur nginx"