backup-orchestrator (0.16.0)
Published 2026-08-09 09:54:35 +00:00 by tsieprawski
Installation
pip install --index-url backup-orchestratorAbout 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
resticandborgrepositories against the same synthetic datasets - it writes JSON output under
./benchmark-resultsby 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 30to--runs 100 - expensive large-repository scenarios: usually
--runs 5to--runs 20
- smoke or harness validation:
- 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:
- restic runs use
--read-concurrency 4; inode checking remains enabled because production sources are not FUSE or pCloud mounts - use
--scenario-prefixes hugefor the most decision-relevant large Nextcloud-like comparisons - for light local dry runs, keep
--huge-target-gibmodest and use a native Linux filesystem workdir - for serious host runs, use a large disposable workdir on representative direct local storage; the completed
100 GiBgator run is the current practical scale reference, while the slow USB100 GiBattempt exceeded 16 hours and larger runs should not be assumed feasible - large runs need significantly more free workspace than the nominal
--huge-target-gibtarget 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: minorfix,ci,refactor,test: patchdocs,chore: no release
Requirements
Requires Python: >=3.13