backup-orchestrator (0.16.0)

Published 2026-08-09 09:54:35 +00:00 by tsieprawski

Installation

pip install --index-url  backup-orchestrator

About this package

Scaffold for backup orchestration services

backup-orchestrator

Minimal scaffold for the future backup orchestration server and client.

Current scope:

  • installable Python package
  • no-op CLI entrypoint
  • unit tests
  • integration test script
  • release script and post-merge release workflow
  • Forgejo workflows for checks, integration, release, and conventional commit validation

Local Usage

Run checks:

./scripts/check.sh

Run the integration test:

./scripts/test-integration.sh

Run the release integration test:

./scripts/test-integration-release.sh

Run the manual restic and Borg benchmark harness:

./scripts/test-benchmark-restic-cache.sh --runs 5

Notes:

  • this is a manual benchmark tool, not a normal CI test
  • it runs real local restic and borg repositories against the same synthetic datasets
  • it writes JSON output under ./benchmark-results by default
  • use it first on one machine locally, then reuse it on gator and zotac for cross-host measurements
  • practical repetition guidance:
    • smoke or harness validation: --runs 3
    • first comparative pass: --runs 10
    • cheap scenario percentile runs: --runs 30 to --runs 100
    • expensive large-repository scenarios: usually --runs 5 to --runs 20
  • current default decision-focused variants are:
    • restic: default, cache-off, group-by-paths, explicit-parent, no-scan, ignore-ctime, compression-off, compression-max
    • borg: default, files-cache-disabled
  • restic runs use --read-concurrency 4; inode checking remains enabled because production sources are not FUSE or pCloud mounts
  • use --scenario-prefixes huge for the most decision-relevant large Nextcloud-like comparisons
  • for light local dry runs, keep --huge-target-gib modest and use a native Linux filesystem workdir
  • for serious host runs, use a large disposable workdir on representative direct local storage; the completed 100 GiB gator run is the current practical scale reference, while the slow USB 100 GiB attempt exceeded 16 hours and larger runs should not be assumed feasible
  • large runs need significantly more free workspace than the nominal --huge-target-gib target because source data, repository growth, cache state, temp files, and tool-specific working state coexist during the benchmark; plan for a substantial multi-times space multiplier rather than target-size-only headroom

Profile a real source tree before changing synthetic benchmark data:

python3 scripts/profile-backup-dataset.py /path/to/source --output source-profile.json

The profiler is read-only. It reports file-count, byte, extension, size-bucket, top-level-directory, and sampled content entropy/compressibility statistics to guide synthetic benchmark data design.

Run the CLI:

python -m backup_orchestrator
backup-orchestrator scaffold

Licensing

All code in this repository is proprietary. All rights reserved.

Release

Merges to main are intended to trigger a package release to the local Forgejo PyPI registry.

Version bumps are driven by conventional commits:

  • breaking changes: major
  • feat: minor
  • fix, ci, refactor, test: patch
  • docs, chore: no release

Requirements

Requires Python: >=3.13
Details
PyPI
2026-08-09 09:54:35 +00:00
4
23 KiB
Assets (1)
Versions (24) View all
0.19.0 2026-09-09
0.18.1 2026-08-30
0.18.0 2026-08-17
0.17.0 2026-08-10
0.16.0 2026-08-09