changes to the backlupo

This commit is contained in:
2026-07-17 15:06:45 +02:00
parent 32f39223f4
commit f45988d0e7
+10 -13
View File
@@ -4,7 +4,7 @@ set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
COMPOSE_FILE="docker-compose-multitenant.yml" COMPOSE_FILE="docker-compose-multitenant.yml"
# Verzeichnisse # Directories
INVOICE_ARCHIVE_DIR="${INVOICE_ARCHIVE_DIR:-/var/backups/invoice-archive}" INVOICE_ARCHIVE_DIR="${INVOICE_ARCHIVE_DIR:-/var/backups/invoice-archive}"
FULL_BACKUP_DIR="${FULL_BACKUP_DIR:-/var/backups/inventarsystem}" FULL_BACKUP_DIR="${FULL_BACKUP_DIR:-/var/backups/inventarsystem}"
LOG_DIR="$SCRIPT_DIR/logs" LOG_DIR="$SCRIPT_DIR/logs"
@@ -67,7 +67,6 @@ cleanup_old_archives() {
if [[ -n "$KEEP_DAYS" ]]; then if [[ -n "$KEEP_DAYS" ]]; then
find "$INVOICE_ARCHIVE_DIR" -maxdepth 1 -type f -mtime +"$KEEP_DAYS" -print -delete 2>/dev/null || true find "$INVOICE_ARCHIVE_DIR" -maxdepth 1 -type f -mtime +"$KEEP_DAYS" -print -delete 2>/dev/null || true
fi fi
# Behalte die kompletten DB-Backups für 30 Tage
find "$FULL_BACKUP_DIR" -maxdepth 1 -type f -mtime +30 -print -delete 2>/dev/null || true find "$FULL_BACKUP_DIR" -maxdepth 1 -type f -mtime +30 -print -delete 2>/dev/null || true
} }
@@ -82,23 +81,23 @@ docker_backup() {
local timestamp local timestamp
timestamp="$(date +'%Y-%m-%d_%H-%M-%S')" timestamp="$(date +'%Y-%m-%d_%H-%M-%S')"
echo "[$(date +'%T')] Starte VOLLSTAENDIGES System-Backup..." echo "[$(date +'%T')] Starting full system backup..."
# 1. MongoDB Full Dump (Alles: Ausleihen, User, Inventar, etc.) # 1. Full MongoDB Dump
if docker compose -f "$COMPOSE_FILE" ps -q mongodb >/dev/null 2>&1; then if docker compose -f "$COMPOSE_FILE" ps -q mongodb >/dev/null 2>&1; then
echo "[$(date +'%T')] Erstelle Datenbank-Dump (MongoDB)..." echo "[$(date +'%T')] Creating MongoDB dump..."
docker compose -f "$COMPOSE_FILE" exec -T mongodb mongodump --archive --gzip > "$FULL_BACKUP_DIR/full_db_${timestamp}.archive.gz" docker compose -f "$COMPOSE_FILE" exec -T mongodb mongodump --archive --gzip > "$FULL_BACKUP_DIR/full_db_${timestamp}.archive.gz"
else else
echo "Warnung: MongoDB-Container nicht gefunden. Überspringe DB-Dump." echo "Warning: MongoDB container not found. Skipping DB dump."
fi fi
# 2. Logs sichern # 2. Archive Logs
if [ -d "$LOG_DIR" ]; then if [ -d "$LOG_DIR" ]; then
echo "[$(date +'%T')] Sichere Logs..." echo "[$(date +'%T')] Archiving logs..."
tar -czf "$FULL_BACKUP_DIR/logs_${timestamp}.tar.gz" -C "$(dirname "$LOG_DIR")" "$(basename "$LOG_DIR")" tar -czf "$FULL_BACKUP_DIR/logs_${timestamp}.tar.gz" -C "$(dirname "$LOG_DIR")" "$(basename "$LOG_DIR")"
fi fi
# 3. Invoice Export (für Kompatibilität mit dem alten Format) # 3. Legacy Invoice Export
local app_container local app_container
app_container="$(docker compose -f "$COMPOSE_FILE" ps -q app | tr -d '[:space:]')" app_container="$(docker compose -f "$COMPOSE_FILE" ps -q app | tr -d '[:space:]')"
if [[ -n "$app_container" ]]; then if [[ -n "$app_container" ]]; then
@@ -116,14 +115,12 @@ docker_backup() {
docker cp "$app_container":"${remote_base}.csv" "$INVOICE_ARCHIVE_DIR/" docker cp "$app_container":"${remote_base}.csv" "$INVOICE_ARCHIVE_DIR/"
docker cp "$app_container":"${remote_base}.meta.json" "$INVOICE_ARCHIVE_DIR/" docker cp "$app_container":"${remote_base}.meta.json" "$INVOICE_ARCHIVE_DIR/"
else else
echo "[$(date +'%T')] Info: Keine Rechnungsdaten gefunden." echo "[$(date +'%T')] Info: No invoice records found to export."
fi fi
docker compose -f "$COMPOSE_FILE" exec -T app rm -rf "$output_dir" docker compose -f "$COMPOSE_FILE" exec -T app rm -rf "$output_dir"
fi fi
echo "[$(date +'%T')] Backup erfolgreich abgeschlossen!"
echo "Dateien gespeichert in: $FULL_BACKUP_DIR"
return 0 return 0
} }
@@ -142,7 +139,7 @@ main() {
cleanup_old_archives cleanup_old_archives
return 0 return 0
fi fi
echo "Error: Docker Backup fehlgeschlagen." >&2 echo "Error: Docker backup failed." >&2
return 1 return 1
;; ;;
*) *)