58 lines
1.9 KiB
Bash
Executable File
58 lines
1.9 KiB
Bash
Executable File
#!/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"
|