| .gitattributes | ||
| .gitignore | ||
| ANLEITUNG.md | ||
| gui.py | ||
| LICENSE | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
| server_config.py | ||
| setup.sh | ||
| vmware_backup.py | ||
| vmware_restore.py | ||
VMware ESXi Backup Tool für macOS
Eine eigenständige macOS-Anwendung zur Sicherung und Wiederherstellung von VMware ESXi Servern (Host-Konfigurationen und VMDK-Dateien).
📋 Inhaltsverzeichnis
- Features
- Screenshots
- Installation
- Verwendung
- Backup-Struktur
- Anforderungen
- Technische Details
- Fehlerbehebung
- Lizenz
✨ Features
Backup-Funktionen
- Host-Sicherung: Vollständige Sicherung von ESXi Host-Konfigurationen
- Systeminformationen (CPU, RAM, Speicher)
- Netzwerk-Konfiguration (VLANs, Portgruppen)
- DNS- und Zeitkonfiguration
- Datastore-Informationen
- VMDK-Sicherung: Sichern von virtuellen Festplatten (VMDK-Dateien)
- Unterstützung für große Dateien (>100GB)
- Automatische Erkennung von Descriptor- und Flat-Dateien
- Mehrere Download-Methoden (HTTP, SSH/SCP, cat/dd)
- Fortschrittsanzeige mit Cancel-Funktionalität
- VM-Metadaten: Vollständige VM-Konfigurationen werden gesichert
- CPU, RAM, Netzwerk-Adapter
- Festplatten-Konfiguration
- Snapshot-Informationen
Wiederherstellungs-Funktionen
- VM-Wiederherstellung: VMs aus Backups wiederherstellen
- Host-Konfiguration: Host-Einstellungen wiederherstellen
- Datastore-Auswahl: Flexible Auswahl des Ziel-Datastores
Benutzerfreundlichkeit
- Native macOS GUI: Moderne grafische Oberfläche mit PyQt6
- Server-Verwaltung: Speichern und Verwalten mehrerer ESXi-Server
- Verschlüsselte Passwort-Speicherung
- Schnelle Server-Auswahl aus Liste
- VM-Auswahl: Möglichkeit, einzelne VMs auszuwählen oder alle zu sichern
- Fortschrittsanzeige: Echtzeit-Fortschrittsanzeige für alle Operationen
- Cancel-Funktionalität: Downloads können jederzeit abgebrochen werden
Sicherheit
- Verschlüsselte Credentials: Passwörter werden mit Fernet-Verschlüsselung gespeichert
- SSL/TLS-Unterstützung: Unterstützt selbstsignierte Zertifikate
- Eigenständig: Keine zusätzliche Software erforderlich
📸 Screenshots
🚀 Installation
Voraussetzungen
- macOS: 10.14 (Mojave) oder höher
- Python: 3.9 oder höher (meist bereits auf macOS installiert)
- Internetverbindung: Für den Download der Python-Pakete
Schnellstart mit Setup-Skript
Das einfachste Installationsverfahren:
# Repository klonen
git clone https://github.com/lippie281/vmware-esxi-backup.git
cd vmware-esxi-backup
# Setup-Skript ausführen (erstellt venv und installiert Abhängigkeiten)
chmod +x setup.sh
./setup.sh
# Anwendung starten
source venv/bin/activate
python3 main.py
Manuelle Installation
1. Repository klonen
git clone https://github.com/IHR_USERNAME/vmware-esxi-backup.git
cd vmware-esxi-backup
2. Virtuelles Environment erstellen (empfohlen)
python3 -m venv venv
source venv/bin/activate
3. Abhängigkeiten installieren
pip install --upgrade pip
pip install -r requirements.txt
4. Anwendung starten
python3 main.py
Installation ohne venv (nicht empfohlen)
pip3 install -r requirements.txt
python3 main.py
Hinweis: Die Verwendung eines virtuellen Environments wird dringend empfohlen, um Konflikte mit anderen Python-Projekten zu vermeiden.
📖 Verwendung
GUI starten
# Mit aktiviertem venv
source venv/bin/activate
python3 main.py
# Oder direkt mit venv-Python
./venv/bin/python3 main.py
Schritt-für-Schritt-Anleitung
1. Verbindung herstellen
- Öffnen Sie die Anwendung
- Gehen Sie zum Tab "Verbindung"
- Geben Sie die ESXi Server-Daten ein:
- IP-Adresse oder Hostname (z.B.
192.168.1.100) - Port (Standard:
443) - Benutzername (z.B.
root) - Passwort
- IP-Adresse oder Hostname (z.B.
- Optional: Klicken Sie auf "Speichern", um die Server-Daten zu speichern
- Klicken Sie auf "Verbinden"
Nach erfolgreicher Verbindung werden alle VMs und Datastores angezeigt.
2. Server-Konfiguration speichern
- Geben Sie einen Namen für die Server-Konfiguration ein
- Klicken Sie auf "Speichern"
- Die Konfiguration erscheint in der Dropdown-Liste
- Zum Laden: Wählen Sie die Konfiguration aus der Liste und klicken Sie auf "Verbinden"
3. Backup erstellen
- Gehen Sie zum Tab "Backup"
- Wählen Sie die Backup-Optionen:
- ☑ Host-Konfiguration sichern
- ☑ VMs sichern
- Optional: Wählen Sie spezifische VMs aus der Liste aus (Standard: Alle VMs)
- Wählen Sie das Backup-Zielverzeichnis (klicken Sie auf "Durchsuchen...")
- Klicken Sie auf "Backup starten"
- Der Fortschritt wird im Status-Bereich angezeigt
- Sie können den Download jederzeit mit "Abbrechen" stoppen
4. Wiederherstellung
- Gehen Sie zum Tab "Wiederherstellung"
- Wählen Sie das Backup-Verzeichnis aus
- Wählen Sie die VM oder Host-Konfiguration aus der Liste
- Für VMs: Wählen Sie den Ziel-Datastore
- Klicken Sie auf "Wiederherstellen"
Tipps
- Große VMDK-Dateien: Downloads können bei großen Dateien (>50GB) mehrere Stunden dauern
- Laufende VMs: Für konsistente Backups sollten VMs ausgeschaltet werden oder ein Snapshot erstellt werden
- Netzwerk: Stellen Sie sicher, dass eine stabile Verbindung zum ESXi Server besteht
- SSH: Für optimale Download-Performance sollte SSH auf dem ESXi Server aktiviert sein
📁 Backup-Struktur
Backups werden im folgenden Format gespeichert:
backup_verzeichnis/
├── Hostname_20250209_143022/
│ ├── host_config.json # Host-Konfiguration
│ └── host_config_details.json # Detaillierte Host-Informationen
│
├── VM_Name_20250209_143045/
│ ├── vm_info.json # VM-Konfiguration und Metadaten
│ ├── disk1.vmdk # VMDK Descriptor-Datei
│ ├── disk1-flat.vmdk # VMDK Daten-Datei
│ ├── disk2.vmdk
│ └── disk2-flat.vmdk
│
└── VM_Name2_20250209_143100/
└── ...
Dateiformate
- host_config.json: Host-Konfiguration im JSON-Format
- vm_info.json: VM-Konfiguration mit allen Details (CPU, RAM, Netzwerk, etc.)
- *.vmdk: VMware Disk Descriptor-Dateien
- *-flat.vmdk: VMware Disk Daten-Dateien
🔧 Anforderungen
System-Anforderungen
- Betriebssystem: macOS 10.14 (Mojave) oder höher
- Python: 3.9 oder höher
- RAM: Mindestens 4GB (für große VMDK-Dateien empfohlen: 8GB+)
- Festplattenspeicher: Abhängig von der Größe der zu sichernden VMs
ESXi Server-Anforderungen
- VMware ESXi: Version 6.0 oder höher
- API-Zugriff: Muss aktiviert sein (Standard)
- HTTP-Datastore-Zugriff: Für VMDK-Downloads empfohlen
- SSH: Optional, aber empfohlen für bessere Download-Performance
- Benutzer-Berechtigungen:
- Host-Konfiguration lesen
- VM-Konfiguration lesen
- Datastore-Zugriff (für VMDK-Downloads)
Netzwerk-Anforderungen
- HTTPS: Port 443 (Standard)
- HTTP: Port 80 (optional, für Datastore-Zugriff)
- SSH: Port 22 (optional, für optimale Performance)
🔬 Technische Details
Verwendete Technologien
- Python 3.9+: Programmiersprache
- PyQt6: GUI-Framework für native macOS-Oberfläche
- pyvmomi: VMware vSphere API Python-Bibliothek
- paramiko: SSH/SCP für Datei-Downloads
- requests: HTTP/HTTPS für Datastore-Zugriff
- cryptography: Verschlüsselung für gespeicherte Passwörter
Download-Methoden
Die Anwendung verwendet mehrere Methoden für VMDK-Downloads:
- SCP (Standard): Für Dateien < 10GB
- SSH cat: Fallback-Methode mit Cancel-Unterstützung
- SSH dd: Für gesperrte Dateien (laufende VMs)
- HTTP/HTTPS: Alternative Methode über Datastore-URLs
Sicherheit
- Passwort-Verschlüsselung: Fernet-Symmetric-Encryption (AES 128)
- SSL/TLS: Unterstützt selbstsignierte Zertifikate
- Lokale Speicherung: Credentials werden nur lokal gespeichert (
~/.vmware_backup/)
🐛 Fehlerbehebung
Verbindungsfehler
Problem: "Verbindung fehlgeschlagen"
Lösungen:
- Überprüfen Sie die Netzwerkverbindung zum ESXi Server
- Stellen Sie sicher, dass der API-Zugriff aktiviert ist
- Überprüfen Sie Benutzername und Passwort
- Prüfen Sie die Firewall-Einstellungen
- Bei selbstsignierten Zertifikaten wird die Validierung automatisch umgangen
VMDK-Download-Probleme
Problem: "HTTP-Fehler 404" oder "Download fehlgeschlagen"
Lösungen:
- Stellen Sie sicher, dass HTTP-Datastore-Zugriff aktiviert ist:
- Host → Manage → Services → Enable "HTTP Client"
- Überprüfen Sie die Berechtigungen des Benutzers
- Aktivieren Sie SSH für bessere Download-Performance:
- Host → Manage → Services → Enable "SSH"
- Für laufende VMs: Erstellen Sie einen Snapshot oder schalten Sie die VM aus
Problem: "Device or resource busy"
Lösungen:
- Die VM läuft und die VMDK-Datei ist gesperrt
- Erstellen Sie einen Snapshot für konsistente Backups
- Oder schalten Sie die VM aus
PyQt6-Fehler
Problem: "Symbol not found: __Z13lcPermissionsv"
Lösung:
- Stellen Sie sicher, dass das venv aktiviert ist:
source venv/bin/activate - Neuinstallation von PyQt6:
pip uninstall PyQt6 PyQt6-Qt6 PyQt6_sip pip install PyQt6>=6.10.0
Allgemeine Probleme
Problem: "ModuleNotFoundError"
Lösung:
- Stellen Sie sicher, dass alle Abhängigkeiten installiert sind:
pip install -r requirements.txt - Aktivieren Sie das venv:
source venv/bin/activate
Problem: Downloads stoppen nicht bei "Abbrechen"
Lösung:
- Die Cancel-Funktionalität funktioniert nur bei der SSH cat/dd-Methode
- Bei SCP-Downloads kann es einige Sekunden dauern, bis der Download gestoppt wird
- Für große Dateien wird automatisch die cat-Methode verwendet, die besser unterbrechbar ist
📝 Bekannte Einschränkungen
- Große Dateien: Downloads von sehr großen VMDK-Dateien (>100GB) können mehrere Stunden dauern
- Laufende VMs: Backups von laufenden VMs können inkonsistent sein (Snapshot wird automatisch erstellt)
- Netzwerk: Benötigt stabile Netzwerkverbindung zum ESXi Server
- macOS-only: Aktuell nur für macOS verfügbar (kann aber auf Linux/Windows portiert werden)
🤝 Beitragen
Beiträge sind willkommen! Bitte:
- Forken Sie das Repository
- Erstellen Sie einen Feature-Branch (
git checkout -b feature/AmazingFeature) - Committen Sie Ihre Änderungen (
git commit -m 'Add some AmazingFeature') - Pushen Sie zum Branch (
git push origin feature/AmazingFeature) - Öffnen Sie einen Pull Request
📄 Lizenz
Dieses Projekt steht unter der MIT-Lizenz. Siehe LICENSE Datei für Details.
👤 Autor
Philipp
- GitHub: [@lippie281](https://github.com/lippie281
🙏 Danksagungen
- VMware für die vSphere API
- PyQt-Projekt für die hervorragende GUI-Bibliothek
- Allen Beitragenden der verwendeten Open-Source-Bibliotheken
📞 Unterstützung
Bei Problemen oder Fragen:
- Überprüfen Sie die Fehlerbehebung
- Überprüfen Sie die Log-Ausgabe in der GUI
- Stellen Sie sicher, dass alle Anforderungen erfüllt sind
- Öffnen Sie ein Issue auf GitHub
Hinweis: Dieses Tool ist nicht von VMware entwickelt oder unterstützt. Verwenden Sie es auf eigene Verantwortung.