Files
homelab-infra/ops/borg-ui/scripts
Micha 24d0d90670 Make dump output 0644 by default, exclude flash config from H pull
pre-backup-dumps.sh: atomic_write nimmt jetzt einen optionalen
mode-Parameter (Default 0644). Damit sind alle DB-/SQLite-/BoltDB-
/Mongo-Dumps konsistent 0644 und vom Nearline-Pull lesbar. Die
sensible unraid-flash-config-Familie (.tar.gz, .sha256, .manifest)
ruft explizit mit mode 600 auf und bleibt damit Operator-only.
Loest das Permission-Problem fuer filebrowser.bolt.dump (Source
ist 0640) im naechsten regulaeren Dump-Lauf.

pull-critical-backups.ps1: Jobs koennen ExcludeFiles ueber /XF
mitliefern. borg-dumps-latest schliesst die unraid-flash-config-
Artefakte aus, weil sie bewusst 0600 bleiben sollen und sonst den
Lauf abbrechen lassen. Restore-Quelle fuer Flash-Config bleibt
das Hetzner-Borg-Repo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 20:44:50 +02:00
..
2026-05-26 20:16:19 +02:00

Borg dump scripts

These scripts are intended to run on the Unraid host before a Borg backup starts.

Current script

  • pre-backup-dumps.sh
  • gitea-bundle-mirror.sh

Output

Fresh dump artifacts are written to:

  • /mnt/user/backups/borg/dumps/latest

Fresh Gitea repository bundles are written to:

  • /mnt/user/backups/git-bundles/gitea

Borg UI should include /local/borg-dumps as a backup source. The Gitea bundle target should also be part of the Borg scope, either through the backups share or an explicit Borg source.

The dump set also includes unraid-flash-config.tar.gz, a host-generated archive of /boot/config plus checksum and manifest. Treat this archive as secret backup material.

Notes

  • The script is written for host execution where docker is available.
  • gitea-bundle-mirror.sh additionally expects host access to the Gitea bare repositories under /mnt/user/services/gitea/data/git/repositories.
  • It does not assume Backrest.
  • It keeps only the latest dump set because Borg itself provides history.

The recommended automation path is:

  1. Unraid User Scripts on the host
  2. host-side schedule / cron
  3. Borg UI backup job afterwards

This is preferred over a Borg UI inline hook because the dump script expects:

  • host access to docker exec
  • host paths like /mnt/user/...
  • direct write access to the dump target directory

Do not treat pre-backup-dumps.sh as a Borg UI inline script unless the architecture is deliberately changed later.

See USER_SCRIPTS_SETUP.md for the intended host-side rollout.