2025-09-01 18:16:16 +02:00
2025-09-01 15:49:49 +02:00
2025-09-01 18:16:16 +02:00
env
2025-09-01 17:18:54 +02:00
2025-09-01 18:16:16 +02:00

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. Auf dem Proxmox Server:

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:

0 */6 * * * /root/shell_proxmox_backup_copy.sh >> /var/log/backup_cron.log 2>&1

Oder täglich um 02:30 Uhr:

30 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. Nur Pfade oder Mounts auf Proxmox möglich. Kein SSH Pfad!
SSH_KEY Pfad zum SSH-Key
BACKUPS_TO_KEEP Anzahl der neuesten Backups, die behalten werden

🔔 Benachrichtigungen (ntfy)

Optional kann eine Benachrichtigung per ntfy 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

📋 Rsync

Das Script verwendet rsync zum kopieren der Backups. Bei manchen NAS muss rsync expliziet aktiviert werden.

NAS Link
Synology https://kb.synology.com/de-de/DSM/help/DSM/AdminCenter/file_rsync?version=7
QNAS https://www.qnap.com/de-de/how-to/faq/article/wie-kann-ich-daten-von-einem-synology-nas-%C3%BCber-rsync-auf-einem-qnap-nas-sichern

Beispielausgabe

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!
Description
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.
Readme 49 KiB
Languages
Shell 100%