Backup automatico script del 2025-12-27 10:58
This commit is contained in:
94
scripts/pi2-backup/auto-git-backup.sh
Executable file
94
scripts/pi2-backup/auto-git-backup.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ==============================================================================
|
||||
# 💾 AUTO GIT BACKUP - DINAMICO
|
||||
# Sincronizza automaticamente tutti gli script .sh e .py dal Pi2 e dal Pi1
|
||||
# verso il repository Gitea locale, poi esegue il push.
|
||||
# ==============================================================================
|
||||
|
||||
# --- CONFIGURAZIONE ---
|
||||
REPO_DIR="/home/daniely/loogle-repo"
|
||||
LOG_FILE="/var/log/git-backup.log"
|
||||
DATE=$(date +"%Y-%m-%d %H:%M")
|
||||
|
||||
# IP del Pi1 (Master) da cui prelevare i file remoti
|
||||
PI1_IP="192.168.128.80"
|
||||
PI1_USER="daniely"
|
||||
|
||||
# Redirige tutto l'output (stdout e stderr) nel log
|
||||
exec >> $LOG_FILE 2>&1
|
||||
|
||||
echo "=== Inizio Backup Git: $DATE ==="
|
||||
|
||||
# 1. PREPARAZIONE REPOSITORY
|
||||
# --------------------------
|
||||
if [ -d "$REPO_DIR" ]; then
|
||||
cd "$REPO_DIR" || { echo "❌ Errore: Impossibile entrare in $REPO_DIR"; exit 1; }
|
||||
else
|
||||
echo "❌ Errore: La cartella $REPO_DIR non esiste."; exit 1;
|
||||
fi
|
||||
|
||||
# Aggiorna il repository locale (pull) per evitare conflitti
|
||||
echo "🔄 Eseguo Git Pull..."
|
||||
git pull origin main
|
||||
|
||||
# Assicuriamoci che le cartelle di destinazione esistano
|
||||
mkdir -p ./scripts/pi2-backup
|
||||
mkdir -p ./services/telegram-bot
|
||||
mkdir -p ./scripts/pi1-master
|
||||
mkdir -p ./configs
|
||||
|
||||
# 2. RACCOLTA FILE DAL PI-2 (LOCALE)
|
||||
# ----------------------------------
|
||||
echo "📂 Raccolta dinamica file locali (Pi-2)..."
|
||||
|
||||
# A. Script nella Home (solo .sh) -> scripts/pi2-backup
|
||||
# --include='*.sh' prende gli script, --exclude='*' ignora tutto il resto
|
||||
rsync -av --include='*.sh' --exclude='*' /home/daniely/ "$REPO_DIR/scripts/pi2-backup/"
|
||||
|
||||
# B. Script del Bot (tutti .py e .sh) -> services/telegram-bot
|
||||
rsync -av --include='*.py' --include='*.sh' --exclude='*' /home/daniely/docker/telegram-bot/ "$REPO_DIR/services/telegram-bot/"
|
||||
|
||||
# C. File di Configurazione specifici (Keepalived)
|
||||
if [ -f "/etc/keepalived/keepalived.conf" ]; then
|
||||
sudo cp /etc/keepalived/keepalived.conf ./configs/keepalived_pi2.conf
|
||||
sudo chown daniely:daniely ./configs/keepalived_pi2.conf
|
||||
echo "✅ Configurazione Keepalived Pi2 copiata."
|
||||
fi
|
||||
|
||||
# 3. RACCOLTA FILE DAL PI-1 (REMOTO)
|
||||
# ----------------------------------
|
||||
echo "📡 Raccolta dinamica file remoti (Pi-1)..."
|
||||
|
||||
# A. Script nella Home remota (.sh e .py) -> scripts/pi1-master
|
||||
# Nota: Richiede che le chiavi SSH siano configurate per non chiedere password
|
||||
rsync -av -e "ssh -q" --include='*.sh' --include='*.py' --exclude='*' $PI1_USER@$PI1_IP:/home/daniely/ "$REPO_DIR/scripts/pi1-master/"
|
||||
|
||||
# B. Recupero file specifici fuori dalla home (Legacy da vecchio script)
|
||||
# Se dhcp-alert.sh esiste ancora in /usr/local/bin, lo prendiamo
|
||||
scp -q $PI1_USER@$PI1_IP:/usr/local/bin/dhcp-alert.sh ./scripts/pi1-master/ 2>/dev/null || echo "⚠️ dhcp-alert.sh non trovato su Pi1 (ignorato)"
|
||||
|
||||
# C. Configurazione Keepalived Remota
|
||||
scp -q $PI1_USER@$PI1_IP:/etc/keepalived/keepalived.conf ./configs/keepalived_pi1.conf 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Configurazione Keepalived Pi1 scaricata."
|
||||
else
|
||||
echo "⚠️ Impossibile scaricare Keepalived conf da Pi1."
|
||||
fi
|
||||
|
||||
# 4. GIT PUSH
|
||||
# -----------
|
||||
# Verifica se ci sono cambiamenti reali
|
||||
if [[ `git status --porcelain` ]]; then
|
||||
echo "📝 Rilevati cambiamenti. Eseguo Commit e Push..."
|
||||
|
||||
git add .
|
||||
git commit -m "Backup automatico script del $DATE"
|
||||
git push -u origin main
|
||||
|
||||
echo "✅ Push completato con successo."
|
||||
else
|
||||
echo "ℹ️ Nessun cambiamento rilevato. Repository già aggiornato."
|
||||
fi
|
||||
|
||||
echo "=== Fine Backup Git ==="
|
||||
Reference in New Issue
Block a user