Merge pull request 'release-2' (#2) from release-2 into main

Reviewed-on: #2
This commit is contained in:
Patrick Asmus 2025-08-23 10:01:21 +00:00
commit d3417b0431
2 changed files with 48 additions and 9 deletions

View File

@ -1,10 +1,10 @@
#!/bin/bash
# Script Name: pbs-backup.v1.sh
# Beschreibung: Erstellt Backups auf einem PBS
# Aufruf: ./pbs-backup-script.v1_msmtp.sh
# Aufruf: ./pbs-backup-script.v1.sh
# Autor: Patrick Asmus
# Web: https://www.techniverse.net
# Git-Reposit.: ssh://git@git.techniverse.net:10022/internal-infrastructure/pbs-backup-scripts.git
# Git-Reposit.: https://git.techniverse.net/scriptos/pbs-backup-client-script.git
# Version: 1.1
# Datum: 13.09.2024
# Modifikation: added email support

View File

@ -1,6 +1,6 @@
# PBS Backup Client Script
Dieses Bash-Script erstellt hostbasierte Datei-Backups (pxar) zu einem Proxmox Backup Server (PBS) und benachrichtigt dich bei Erfolg oder Fehler per E-Mail sowie optional via Ntfy. Es ist für den automatisierten Betrieb (z. B. Cron) ausgelegt und nutzt eine ausgelagerte Konfigurationsdatei.
Dieses Bash-Script erstellt hostbasierte Datei-Backups (pxar) zu einem Proxmox Backup Server (PBS) und benachrichtigt dich bei Erfolg oder Fehler optional per E-Mail sowie via Ntfy. Es ist für den automatisierten Betrieb (z. B. Cron) ausgelegt und nutzt eine ausgelagerte Konfigurationsdatei.
## Features
- pxar-Backups definierter Verzeichnisse zu PBS
@ -12,29 +12,29 @@ Dieses Bash-Script erstellt hostbasierte Datei-Backups (pxar) zu einem Proxmox B
- TLS-Fingerprint nur bei selbstsigniertem PBS-Zertifikat notwendig (optional)
## Konfiguration
Alle Einstellungen liegen **ausschließlich** in der Konfigurationsdatei. Standard: `pbs-backup.v2.conf` im selben Verzeichnis wie das Script; alternativ den Pfad per Umgebungsvariable setzen:
Alle Einstellungen liegen **ausschließlich** in der Konfigurationsdatei. Standard: `pbs-backup.v2.conf` im selben Verzeichnis wie das Script; alternativ den Pfad per Umgebungsvariable im Script setzen:
`CONFIG_FILE=/pfad/zur/pbs-backup.v2.conf`.
**PBS-Variablen:**
- `PBS_REPOSITORY` (Pflicht): Repository-String im Format
ohne Port:
ohne Port, wenn PBS unter dem Standard-Port erreichbar ist:
`root@pam!<apiuser>@<pbs-host>:<datastore>`
mit Port (z. B. öffentlich via HTTPS):
`root@pam!<apiuser>@<pbs-host>:<port>:<datastore>`
Beispiel:
`root@pam!vps-backup@pbs.domain.com:443:backup2`
Hinweis: Wenn der PBS aus dem Internet über einen anderen Port als den `8007` erreichbar ist, **muss** der HTTPS-Port angegeben werden.
Hinweis: Wenn der PBS aus dem Internet über einen anderen Port als den `8007` erreichbar ist, **muss** der Port angegeben werden.
- `PBS_FINGERPRINT` (optional): Nur erforderlich bei selbstsigniertem Zertifikat; sonst **leer lassen**.
- `PBS_API` (Pflicht für Auth): API-Key für die Authentifizierung. Das Script setzt ihn intern nur im Subshell als `PBS_PASSWORD`, damit er nicht ins globale Environment oder in Logs gelangt.
**Weitere Optionen (Auszug):**
- `INCLUDE_DIRS`: Array der zu sichernden Verzeichnisse.
- `LOGFILE`, `LOCKFILE`: Pfade für Log- und Lock-Datei.
- Mail: `MAIL_ENABLED`, `MAIL_CMD`, `MAIL_RECIPIENTS`, `MAIL_NOTIFY_ON_SUCCESS`, `MAIL_SUBJECT_SUCCESS`, `MAIL_SUBJECT_FAILURE`.
- Ntfy: `NTFY_ENABLED`, `NTFY_TOPIC_URL`, `NTFY_AUTH_TOKEN`, `NTFY_NOTIFY_ON_SUCCESS`, `NTFY_TITLE_SUCCESS`, `NTFY_TITLE_FAILURE`, `NTFY_PRIORITY_SUCCESS`, `NTFY_PRIORITY_FAILURE`, `NTFY_TAIL_LINES`.
- Mail: `MAIL_ENABLED`, `MAIL_CMD`, `MAIL_RECIPIENTS`, `MAIL_NOTIFY_ON_SUCCESS`, `MAIL_SUBJECT_SUCCESS`, `MAIL_SUBJECT_FAILURE`.
- Ntfy: `NTFY_ENABLED`, `NTFY_TOPIC_URL`, `NTFY_AUTH_TOKEN`, `NTFY_NOTIFY_ON_SUCCESS`, `NTFY_TITLE_SUCCESS`, `NTFY_TITLE_FAILURE`, `NTFY_PRIORITY_SUCCESS`, `NTFY_PRIORITY_FAILURE`, `NTFY_TAIL_LINES`.
- Monitoring: `HEALTHCHECK_OK_FILE` (wird bei Erfolg geschrieben, bei Fehler entfernt).
> Abhängigkeiten: `proxmox-backup-client`, für Ntfy `curl`, für E-Mail z. B. `mail` (msmtp/mailx).
> Abhängigkeiten: `proxmox-backup-client`, für Ntfy `curl`, für E-Mail z. B. `mail` (msmtp/mailx).
> Eine Anleitung zur Installation von `msmtp` gibt es hier:
> https://www.cleveradmin.de/blog/2024/12/linux-einfach-emails-versenden-mit-msmtp
@ -58,6 +58,45 @@ Das Script liest automatisch `pbs-backup.v2.conf` aus dem Script-Verzeichnis. Ei
- Ruhige Ausgabe und ohne Ntfy:
`./pbs-backup.v2.sh -q --no-ntfy`
## Cronjob
Das Script besitzt eigenes Locking (`flock`) und ist damit für periodische Ausführung per Cron geeignet. Für Backups von Pfaden wie `/root` oder `/var/lib/docker/volumes/` sollte der Cronjob als **root** laufen.
### Variante A: `/etc/crontab` (empfohlen)
~~~cron
# /etc/crontab
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
# Täglich um 02:30 Uhr ausführen
30 2 * * * root CONFIG_FILE=/etc/pbs-backup.v2.conf /usr/local/sbin/pbs-backup.v2.sh >> /var/log/pbs-backup.cron.log 2>&1
# Optional schonender (CPU/IO) und mit reduzierter Ausgabe:
#30 2 * * * root ionice -c2 -n7 nice -n 10 CONFIG_FILE=/etc/pbs-backup.v2.conf /usr/local/sbin/pbs-backup.v2.sh -q >> /var/log/pbs-backup.cron.log 2>&1
~~~
### Variante B: Benutzer-Crontab (nur wenn alle Pfade lesbar sind)
~~~bash
crontab -e
~~~
~~~cron
# Täglich um 02:30 Uhr (User-Crontab)
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
30 2 * * * CONFIG_FILE=/etc/pbs-backup.v2.conf /usr/local/sbin/pbs-backup.v2.sh >> /var/log/pbs-backup.cron.log 2>&1
~~~
**Hinweise**
- Verwende **absolute Pfade** zum Script und zur Config.
- Die Script-Ausgabe landet zusätzlich im in der Config definierten `LOGFILE`. Der Cron-Redirect (`>> /var/log/pbs-backup.cron.log 2>&1`) ist optional als zusätzlicher Laufverlauf.
- Erst mit `--dry-run` testen:
~~~bash
CONFIG_FILE=/etc/pbs-backup.v2.conf /usr/local/sbin/pbs-backup.v2.sh --dry-run
~~~
---
## Abhängigkeiten & Installation (x86_64, Ubuntu 22.04/24.04)