No description
Find a file
2026-04-01 20:03:38 +02:00
check4reboot.sh modified: check4reboot.sh 2026-04-01 19:14:29 +02:00
file_backup.sh Merge branch 'main' of https://git.jh1.at/Linux-Admin/DEB-Scripts 2026-04-01 20:03:38 +02:00
influxdb_backup.sh update files 2026-04-01 14:47:42 +02:00
README.md README.md aktualisiert 2026-04-01 17:06:15 +00:00

file_backup.sh

Bash-Script zur Sicherung konfigurierter Verzeichnisse als komprimierte tar.gz-Archive mit automatischer Rotation.

Voraussetzungen

  • /backup muss als Dateisystem eingehängt (gemountet) sein
  • Benutzer, der das Script ausführt, muss Schreibrechte auf BASEDIR und LOGDIR haben
  • numfmt (Paket coreutils) für lesbare Größenausgabe im Log

Verwendung

file_backup.sh [--debug]
file_backup.sh --help
file_backup.sh --version
Parameter Beschreibung
--debug Aktiviert ausführliche Ausgaben auf der Konsole
--help Zeigt Verwendungshinweis und konfigurierte Dirs
--version Gibt Scriptname und Versionsnummer aus

Konfigurationsdatei

Pfad: /usr/local/etc/file_backup.conf

chmod 600 /usr/local/etc/file_backup.conf
chown root:root /usr/local/etc/file_backup.conf

Variablen

Variable Pflicht Standard Beschreibung Beispiel
BACKUP_DIRS Ja Bash-Array der zu sichernden Quellverzeichnisse siehe unten
BASEDIR Ja Basisverzeichnis für Backups (ohne trailing /) BASEDIR=/backup/myhostname
LOGDIR Ja Verzeichnis für Logdateien LOGDIR=/usr/local/logs
RETENTION Nein 7 Anzahl aufzubewahrender Generationen pro Verzeichnis RETENTION=14
EXCLUDE_PATTERNS Nein leer Bash-Array mit Mustern die vom Backup ausgeschlossen werden (tar --exclude) siehe unten

Beispiel-Konfigurationsdatei

# /usr/local/etc/file_backup.conf

# Zu sichernde Verzeichnisse
BACKUP_DIRS=(
    /etc
    /usr/local/etc
    /home
    /var/lib/grafana
)

# Anzahl aufzubewahrender Generationen pro Verzeichnis
RETENTION=7

# Muster die vom Backup ausgeschlossen werden (tar --exclude)
EXCLUDE_PATTERNS=(
    ".vscode-server"
    ".cache"
    "*.tmp"
    "node_modules"
    "rpm"
)

# Verzeichnisse
BASEDIR=/backup/myhostname
LOGDIR=/usr/local/logs

Verzeichnisstruktur

Das Script legt folgende Struktur unterhalb von BASEDIR an:

$BASEDIR/
└── system/
    ├── etc_20260322_140000.tar.gz
    ├── etc_20260321_140000.tar.gz       # ältere Generationen
    ├── home_20260322_140000.tar.gz
    ├── home_20260321_140000.tar.gz
    └── file_backup.stat               # Statusdatei für Monitoring

Der Archivname wird aus dem Quellpfad abgeleitet (/ wird durch _ ersetzt), ergänzt um einen Timestamp (YYYYMMDD_HHMMSS).

Rotation

Überschreitet die Anzahl der Archive für ein Verzeichnis den Wert RETENTION, werden die ältesten Archive automatisch gelöscht. Jedes Quellverzeichnis hat seine eigene unabhängige Zählkette.

Statusdatei

Die Statusdatei (file_backup.stat) enthält semicolon-getrennte Werte für externes Monitoring:

starttime;RC;description;endtime;duration;lastbackupok;backupsize
Feld Beschreibung
starttime Unix-Timestamp: Startzeit des Backups
RC Return Code (0 = OK, 1 = Fehler, 9 = läuft)
description Statusbeschreibung im Klartext
endtime Unix-Timestamp: Endzeit des Backups
duration Laufzeit in Sekunden
lastbackupok Unix-Timestamp: letztes erfolgreiches Backup
backupsize Gesamtgröße des Backup-Verzeichnisses in Bytes

Changelog

Version Datum Beschreibung
1.0 22.03.2026 Erste Version

influxdb_backup.sh

Bash-Script zur Sicherung einzelner InfluxDB 1.x Datenbanken mittels influxd backup.

Voraussetzungen

  • InfluxDB 1.x mit aktivierter HTTP-API und Authentifizierung
  • /backup muss als Dateisystem eingehängt (gemountet) sein
  • Benutzer, der das Script ausführt, muss Schreibrechte auf BASEDIR und LOGDIR haben

Verwendung

influxdb_backup.sh <DATABASE> [--debug]
influxdb_backup.sh --help
influxdb_backup.sh --version
Parameter Beschreibung
DATABASE Name der zu sichernden InfluxDB-Datenbank
--debug Aktiviert ausführliche Ausgaben auf der Konsole
--help Zeigt Verwendungshinweis und verfügbare Datenbanken
--version Gibt Scriptname und Versionsnummer aus

Konfigurationsdatei

Pfad: /usr/local/etc/influxdb_backup.conf

Die Konfigurationsdatei wird beim Scriptstart automatisch eingelesen (source).

Sicherheitshinweis: Die Datei enthält das InfluxDB-Passwort und darf nur für root lesbar sein.

chmod 600 /usr/local/etc/influxdb_backup.conf
chown root:root /usr/local/etc/influxdb_backup.conf

Variablen

Variable Pflicht Beschreibung Beispiel
USER Ja InfluxDB-Benutzername (alternativ: INFLUX_USER) USER=backup
INFLUX_USER Nein InfluxDB-Benutzername (überschreibt USER) INFLUX_USER=backup
PW Ja InfluxDB-Passwort, base64-kodiert PW=eEM2N1hFdXFlU3E2WHd2T2VIZ3M=
BASEDIR Ja Basisverzeichnis für Backups (ohne trailing /) BASEDIR=/backup/myhostname
LOGDIR Ja Verzeichnis für Logdateien LOGDIR=/usr/local/logs

Beispiel-Konfigurationsdatei

# /usr/local/etc/influxdb_backup.conf

# InfluxDB-Zugangsdaten
USER=backup
PW=TWVpblBhc3N3b3J0   # base64-kodiertes Passwort

# Verzeichnisse
BASEDIR=/backup/myhostname
LOGDIR=/usr/local/logs

Passwort base64 kodieren

echo -n 'MeinPasswort' | base64

Verzeichnisstruktur

Das Script legt folgende Struktur unterhalb von BASEDIR an:

$BASEDIR/
└── influxdb/
    ├── <DATABASE>/          # aktuelles Backup
    ├── <DATABASE>.old/      # vorheriges Backup (Rolling Backup)
    └── <DATABASE>.stat      # Statusdatei für Monitoring

Statusdatei

Die Statusdatei (<DATABASE>.stat) enthält semicolon-getrennte Werte für externes Monitoring:

starttime;RC;description;endtime;duration;lastbackupok;backupsize;lastflashbackok
Feld Beschreibung
starttime Unix-Timestamp: Startzeit des Backups
RC Return Code (0 = OK, 1 = Fehler, 5 = Warnungen, 9 = läuft)
description Statusbeschreibung im Klartext
endtime Unix-Timestamp: Endzeit des Backups
duration Laufzeit in Sekunden
lastbackupok Unix-Timestamp: letztes erfolgreiches Backup
backupsize Größe des Backup-Verzeichnisses in Bytes
lastflashbackok Unix-Timestamp: letzter erfolgreicher Flashback

Changelog

Version Datum Beschreibung
1.0 19.07.2017 Erste Version
2.0 22.03.2026 Refactoring: Config-File, Security Hardening, Best Practices, Error Handling