113 lines
3.9 KiB
Markdown
113 lines
3.9 KiB
Markdown
# Proxmox Backup Copy Script
|
|
|
|
Dieses Bash-Skript automatisiert das Kopieren von **Proxmox Backups** auf ein Netzlaufwerk via **rsync über SSH**.
|
|
Es stellt sicher, dass Backups zuverlässig und verlustfrei übertragen werden, prüft deren Integrität und räumt alte Sicherungen automatisch auf.
|
|
|
|
---
|
|
|
|
## ✨ Funktionen
|
|
|
|
- **Integritätsprüfung** jedes Backups mit `zstd -t`
|
|
- **Kopieren via rsync über SSH** (inkl. Prüfsummen-Abgleich)
|
|
- **Fortsetzen abgebrochener Kopien** durch `rsync --partial`
|
|
- **Automatisches Löschen fehlerhafter Backups** (`*_CORRUPT.zst`)
|
|
- **Aufräumen alter Backups** (nur die letzten *n* Backups pro VM/LXC werden behalten)
|
|
- **Automatische Besitzeranpassung** am Zielsystem (`chown`)
|
|
- **Benachrichtigung über ntfy** (optional)
|
|
|
|
---
|
|
|
|
## ⚙️ Ablauf
|
|
|
|
1. Neue Backups im lokalen Proxmox-Backup-Verzeichnis werden erkannt.
|
|
2. Konsistenzprüfung mit `zstd -t`.
|
|
- Fehlerhafte Backups werden als `*_CORRUPT` markiert und bleiben lokal.
|
|
3. Erfolgreiche Backups werden per `rsync` nach `$SSH_DEST` kopiert.
|
|
- Abgebrochene Übertragungen werden fortgesetzt.
|
|
4. Nach erfolgreicher Prüfsummen-Überprüfung wird das lokale Backup gelöscht.
|
|
5. Besitzer am Zielserver wird auf `$SSH_BACKUP_OWNER` gesetzt.
|
|
6. Ältere Backups werden nach Vorgabe (`BACKUPS_TO_KEEP`) entfernt.
|
|
|
|
---
|
|
|
|
## 🔑 SSH-Setup
|
|
|
|
Damit das Skript ohne Passwortabfrage läuft, muss ein SSH-Key erstellt und auf den Zielserver kopiert werden:
|
|
|
|
```bash
|
|
ssh-keygen -t ed25519 -f ~/.ssh/proxmox # Passwort leer lassen
|
|
ssh-copy-id -i ~/.ssh/proxmox.pub root@192.168.178.100
|
|
```
|
|
|
|
*(IP anpassen, Passwort des Zielservers eingeben)*
|
|
|
|
---
|
|
|
|
## 📅 Automatischer Aufruf (Cron)
|
|
|
|
Das Skript lässt nur eine Instanz gleichzeitig zu und kann daher gefahrlos regelmäßig per **cron** gestartet werden, z. B.:
|
|
|
|
Alle 6 Stunden:
|
|
```cron
|
|
0 */6 * * * /root/shell_proxmox_backup_copy.sh >> /var/log/backup_cron.log 2>&1
|
|
```
|
|
|
|
Oder täglich um 02:00 Uhr:
|
|
```cron
|
|
0 2 * * * /root/shell_proxmox_backup_copy.sh >> /var/log/backup_cron.log 2>&1
|
|
```
|
|
|
|
---
|
|
|
|
## 🛠️ Konfiguration
|
|
|
|
Im Skript können die wichtigsten Variablen angepasst werden:
|
|
|
|
| Variable | Beschreibung |
|
|
|--------------------|--------------|
|
|
| `PROX_BACKUP_DIR` | Lokales Proxmox-Backup-Verzeichnis (z. B. `/var/lib/vz/dump`) |
|
|
| `SSH_USER` | SSH-Benutzer für die Verbindung zum NAS |
|
|
| `SSH_BACKUP_OWNER` | Besitzer der Backups am Zielsystem (z. B. `thorsten`) |
|
|
| `SSH_HOST` | IP oder Hostname des Zielservers |
|
|
| `SSH_DEST` | Zielpfad am NAS (muss per SSH erreichbar sein) |
|
|
| `LOGFILE` | Pfad zur Logdatei |
|
|
| `SSH_KEY` | Pfad zum SSH-Key |
|
|
| `BACKUPS_TO_KEEP` | Anzahl der neuesten Backups, die behalten werden |
|
|
|
|
---
|
|
|
|
## 🔔 Benachrichtigungen (ntfy)
|
|
|
|
Optional kann eine Benachrichtigung per [ntfy](https://ntfy.sh) aktiviert werden.
|
|
Dazu die folgenden Variablen im Skript anpassen:
|
|
|
|
| Variable | Beschreibung |
|
|
|----------------|--------------|
|
|
| `NTFY_USE` | `true` = aktivieren, `false` = deaktivieren |
|
|
| `NTFY_TOPIC` | ntfy Topic-Name (z. B. `Proxmox`) |
|
|
| `NTFY_SERVER` | Serveradresse (z. B. `192.168.178.25:5885`) |
|
|
| `NTFY_AUTH` | Authentifizierungstoken (z. B. `Bearer <token>`) |
|
|
| `NTFY_TITLE` | Titel der Nachricht |
|
|
| `NTFY_ICON` | Optionales Icon |
|
|
|
|
---
|
|
|
|
## 📋 Zusammenfassung der Logs
|
|
|
|
- **Konsolen-Logs** mit farblicher Hervorhebung
|
|
- **Logfile** wird nur beschrieben, wenn neue Backups gefunden wurden
|
|
- **Highlight-Logs** zur besseren Übersicht (Start/Ende)
|
|
|
|
---
|
|
|
|
## ✅ Beispielausgabe
|
|
|
|
```text
|
|
2025-09-01 12:00:00 [INFO] Starte das Übertragen von Backups
|
|
2025-09-01 12:00:01 [INFO] Verarbeite Backup vm-101-disk-2025_09_01-00_00_00.vma.zst
|
|
2025-09-01 12:00:20 [INFO] Kopieren abgeschlossen. Checksumme wird überprüft...
|
|
2025-09-01 12:00:21 [INFO] Checksumme stimmt.
|
|
2025-09-01 12:00:22 [INFO] Lösche Backup vm-101-disk-2025_09_01-00_00_00 auf Proxmox...
|
|
2025-09-01 12:00:23 [INFO] Abgeschlossen!
|
|
```
|