From 9b508ec1c5f3393f0f391d434aceb2169d66e67f Mon Sep 17 00:00:00 2001 From: scriptos Date: Sat, 23 Aug 2025 11:46:26 +0200 Subject: [PATCH 1/3] header angepasst --- .old/pbs-backup.v1.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.old/pbs-backup.v1.sh b/.old/pbs-backup.v1.sh index 202ab1e..5c82d86 100644 --- a/.old/pbs-backup.v1.sh +++ b/.old/pbs-backup.v1.sh @@ -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 -- 2.47.2 From 05287cce70cebd4e0de7c7bf660c23c06ef5e2f4 Mon Sep 17 00:00:00 2001 From: scriptos Date: Sat, 23 Aug 2025 11:52:26 +0200 Subject: [PATCH 2/3] Dokumentation optimiert --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9cb9889..e66833e 100644 --- a/README.md +++ b/README.md @@ -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!@:` mit Port (z. B. öffentlich via HTTPS): `root@pam!@::` 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 -- 2.47.2 From b3e0a9fc685b8f1c29e80574fd4499ef950facd5 Mon Sep 17 00:00:00 2001 From: scriptos Date: Sat, 23 Aug 2025 11:59:33 +0200 Subject: [PATCH 3/3] Cron hinzugefuegt --- README.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/README.md b/README.md index e66833e..aaf50fc 100644 --- a/README.md +++ b/README.md @@ -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) -- 2.47.2