c872ecd9a302897ca1782c8cfe7bf9942690b16d
tar-multibackup
Ein einfaches, aber flexibles Bash-Skript zur Sicherung mehrerer Verzeichnisse mit tar, inklusive:
- konfigurierbaren Pre-/Post-Commands,
- definierbaren Ausschlüssen (
--exclude), - automatischem Aufräumen alter Backups (Retention),
- nutzerdefinierter Konfiguration via Datei.
🚀 Features
- Sicherung beliebig vieler Verzeichnisse via
tar - Konfigurierbare Ausschlüsse (
--exclude) - Vor- und Nachbearbeitungsbefehle (z. B. Dienste stoppen/starten)
- Aufbewahrungsdauer für Backups festlegbar
- Lesbare Log-Ausgabe mit Status-Infos und Farbcodierung
- Unterstützung für eigene Konfigurationsdateien per Umgebungsvariable
- Optionales Debugging via
DEBUG=true
🛠️ Installation
cd /usr/local/src
git clone https://gitea.gnilebein.de/gnilebein/tar-multibackup.git
ln -sf /usr/local/src/tar-multibackup/multibackup /usr/local/bin/multibackup
chmod +x /usr/local/src/tar-multibackup/multibackup
cp /usr/local/src/tar-multibackup/multibackup.conf ~/.multibackup.conf
⚙️ Konfiguration
Die Konfigurationsdatei (Standard: ~/.multibackup.conf) definiert das Backup-Verhalten.
Beispiel:
# Zeitstempel im Dateinamen
timestamp=$(date +%Y%m%d)
# Zielverzeichnis für Backups
backup_destination="/var/backups"
# Verzeichnisse, die gesichert werden sollen
folders_to_backup=(
"/etc"
"/var/www"
"/var/lib/mysql"
)
# Pfade, die vom Backup ausgeschlossen werden sollen
tar_excludes=(
"tmp"
"nginx-php-fcgi.sock"
)
# Zusätzliche Optionen für tar
tar_options=""
# Wie lange Backups behalten werden (z. B. +7 für älter als 7 Tage)
backup_retention="+7"
# Vor dem Backup auszuführende Befehle
pre_commands=(
"systemctl stop mysql"
)
# Nach dem Backup auszuführende Befehle
post_commands=(
"systemctl start mysql"
)
🧪 Nutzung
multibackup
Mit alternativer Konfigurationsdatei und aktiviertem Debug-Modus:
CONFIG=/pfad/zur/konfig.conf DEBUG=true multibackup
📅 Cronjob-Einrichtung
Für tägliche automatische Backups z. B. um 05:00 Uhr:
# /etc/cron.d/backup-daily
0 5 * * * root /usr/local/bin/multibackup &>/dev/null
🌐 Umgebungsvariablen
| Variable | Beschreibung |
|---|---|
DEBUG |
Aktiviert Bash-Debug-Ausgabe (set -x) |
CONFIG |
Pfad zu alternativer Konfigurationsdatei |
✅ Beispielausgabe
[pre-command] [1/1] [INFO] Running "systemctl stop mysql":
[pre-command] [1/1] [SUCCESS] Pre command "systemctl stop mysql" successfully completed!
[backup] [1/3] [INFO] Starting backup "/var/backups/etc/20250718.tar.gz"
[backup] [1/3] [SUCCESS] Backup "/var/backups/etc/20250718.tar.gz" successfully completed!
...
[post-command] [1/1] [INFO] Running "systemctl start mysql":
[post-command] [1/1] [SUCCESS] Post command "systemctl start mysql" successfully completed!
🙏 Credits
Dieses Skript ist ein Fork von:
https://github.com/frdmn/tar-multibackup
📝 Lizenz
MIT License – Frei nutzbar, aber ohne Gewähr.
Languages
Shell
100%