#!/bin/bash
# Paperless-Backup-Skript (robust)
# Sichert /data/paperless nach /data/paperless/backup, ohne sich selbst zu packen
set -euo pipefail

SOURCE_DIR="/data/paperless"
BACKUP_DIR="/data/paperless/backup"
DATE="$(date +%F_%H-%M)"
BACKUP_FILE="$BACKUP_DIR/paperless-backup-$DATE.tar.gz"

mkdir -p "$BACKUP_DIR"

echo "[$(date)] Starte Backup von $SOURCE_DIR ..."
cd /home/paperless

# Container sauber stoppen
echo "Stoppe Docker-Container ..."
docker compose down

# Container am Ende (auch bei Fehler) wieder hochfahren
cleanup() {
  echo "Starte Docker-Container neu ..."
  # falls das Verzeichnis nicht existiert/zugänglich ist, nicht scheitern
  ( cd /home/paperless && docker compose up -d ) || true
}
trap cleanup EXIT

# Archiv erstellen:
# - Wir wechseln mit -C auf Root und packen den relativen Pfad 'data/paperless'
# - Dabei schließen wir 'data/paperless/backup' explizit aus, damit das Archiv nicht sich selbst enthält
echo "Erstelle Archiv $BACKUP_FILE ..."
tar -C / \
    --exclude='data/paperless/backup' \
    -czf "$BACKUP_FILE" \
    data/paperless

echo "[$(date)] Backup abgeschlossen: $BACKUP_FILE"
