Merge pull request 'release-2' (#2) from release-2 into main
Reviewed-on: #2
This commit is contained in:
commit
d3417b0431
@ -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
|
||||
|
53
README.md
53
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!<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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user