Files
tar-multibackup/README.md

3.0 KiB
Raw Permalink Blame History

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.