# 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 ```bash 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: ```bash # 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 ```bash multibackup ``` Mit alternativer Konfigurationsdatei und aktiviertem Debug-Modus: ```bash CONFIG=/pfad/zur/konfig.conf DEBUG=true multibackup ``` --- ## 📅 Cronjob-Einrichtung Für tägliche automatische Backups z. B. um 05:00 Uhr: ```cron # /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 ```text [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.