#!/bin/bash # --- CONFIGURAZIONE --- REMOTE_IP="192.168.128.81" REMOTE_USER="daniely" # Cartella che contiene 'data' e 'letsencrypt' SOURCE_BASE="/home/daniely/docker/npm" TEMP_FILE="/tmp/npm_full_clone.tar.gz" echo "[$(date)] Avvio clonazione totale NPM (Master -> Backup)..." # 1. Crea un archivio compresso di TUTTO (Database SQL + Certificati) # Usiamo sudo per leggere i file di root senza permessi negati # Escludiamo i log per risparmiare spazio sudo tar --exclude='*.log' -czf "$TEMP_FILE" -C "$SOURCE_BASE" data letsencrypt # 2. Assegna l'archivio all'utente corrente (per poterlo spedire via SCP) sudo chown $USER:$USER "$TEMP_FILE" # 3. Spedisce l'archivio al Pi-2 echo "Invio archivio al Pi-2 ($REMOTE_IP)..." scp -o ConnectTimeout=10 "$TEMP_FILE" "$REMOTE_USER@$REMOTE_IP:/tmp/" if [ $? -eq 0 ]; then echo "Trasferimento riuscito. Applicazione sul Backup..." # 4. Comanda al Pi-2 di: # a) Arrestare NPM (per sbloccare il database) # b) Scompattare sovrascrivendo tutto # c) Ripristinare i permessi di root # d) Riavviare NPM ssh "$REMOTE_USER@$REMOTE_IP" " echo ' ...Stop NPM...'; docker stop npm; echo ' ...Estrazione dati...'; # Pulisce la cartella di destinazione prima di estrarre per evitare residui sudo rm -rf /home/daniely/docker/npm/data/* sudo rm -rf /home/daniely/docker/npm/letsencrypt/* sudo tar -xzf /tmp/npm_full_clone.tar.gz -C /home/daniely/docker/npm/; echo ' ...Fix Permessi...'; sudo chown -R root:root /home/daniely/docker/npm/; echo ' ...Start NPM...'; docker start npm; # Pulizia remota rm /tmp/npm_full_clone.tar.gz " echo "[$(date)] Sincronizzazione Completata con Successo." else echo "[$(date)] ERRORE CRITICO: Trasferimento fallito." fi # 5. Pulizia locale rm "$TEMP_FILE"