#!/bin/bash
#
# Skrypt do backupu Home Assistant
# Użycie: ./backup-ha.sh [test|prod|all]
#
set -e
ENVIRONMENT="${1:-all}"
BACKUP_DIR="./backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# Funkcja do backupu pojedynczego środowiska
backup_environment() {
local env=$1
local ip=$2
local name=$3
echo "📦 Backup $name ($ip)..."
# Backup konfiguracji HA
local backup_file="$BACKUP_DIR/${env}_config_${TIMESTAMP}.tar.gz"
if sshpass -p "QWer!@34" ssh -o StrictHostKeyChecking=no root@${ip} "test -d /root/config" 2>/dev/null; then
sshpass -p "QWer!@34" ssh -o StrictHostKeyChecking=no root@${ip} "cd /root && tar czf - config/" > "$backup_file"
echo "✅ Config: $backup_file ($(du -h $backup_file | cut -f1))"
else
echo "⚠️ Brak dostępu do $name"
return 1
fi
# Snapshot VM (opcjonalnie - wymaga API Proxmox)
echo " 💾 Tworzenie snapshot VM..."
local vmid
if [ "$env" = "test" ]; then
vmid=210
else
vmid=211
fi
sshpass -p "QWer!@34" ssh -o StrictHostKeyChecking=no root@192.168.50.200 \
"qm snapshot $vmid backup_${TIMESTAMP} --description 'Auto backup ${TIMESTAMP}'" 2>/dev/null || echo " ⚠️ Nie można utworzyć snapshot VM"
echo ""
}
echo "======================================"
echo "💾 Backup Home Assistant"
echo "======================================"
echo "Data: $(date)"
echo "======================================"
echo ""
if [ "$ENVIRONMENT" = "test" ] || [ "$ENVIRONMENT" = "all" ]; then
backup_environment "test" "192.168.50.210" "TEST"
fi
if [ "$ENVIRONMENT" = "prod" ] || [ "$ENVIRONMENT" = "all" ]; then
backup_environment "prod" "192.168.50.211" "PROD"
fi
echo "======================================"
echo "✅ Backup zakończony"
echo "======================================"
echo "Lokalizacja: $BACKUP_DIR"
echo ""
ls -lh "$BACKUP_DIR" | tail -10
echo ""
echo "💡 Przywracanie backupu:"
echo " ./restore-backup.sh <plik_backupu> [test|prod]"
echo "======================================"