Newer
Older
homeassistant-infra / scripts / backup-ha.sh
#!/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 "======================================"