- Shell 100%
| check4reboot.sh | ||
| file_backup.sh | ||
| influxdb_backup.sh | ||
| README.md | ||
file_backup.sh
Bash-Script zur Sicherung konfigurierter Verzeichnisse als komprimierte tar.gz-Archive mit automatischer Rotation.
Voraussetzungen
/backupmuss als Dateisystem eingehängt (gemountet) sein- Benutzer, der das Script ausführt, muss Schreibrechte auf
BASEDIRundLOGDIRhaben numfmt(Paketcoreutils) 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
/backupmuss als Dateisystem eingehängt (gemountet) sein- Benutzer, der das Script ausführt, muss Schreibrechte auf
BASEDIRundLOGDIRhaben
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 |