Expand description
Backup planning. Pure functions that take service install state + the user’s backup config and produce typed plans the CLI executes.
What lives here:
BackupRunPlan: everything the CLI needs to push one service’s data to the configured restic repository.BackupRestorePlan: same shape for the reverse operation.plan_backup_run/plan_backup_restore: the planners.
What does not live here: spawning the restic subprocess, running
hook scripts, or any other side effect. The CLI layer owns those.
Keeping the planner pure means it round-trips cleanly in tests
against a tempdir without needing restic on the test runner.
Structs§
- Backup
Restore Plan - Instructions for restoring one installed service from a specific restic snapshot.
- Backup
RunPlan - Concrete instructions for backing up one installed service.
Functions§
- execute_
backup_ run - Run a planned backup end-to-end: pre hook, restic, post hook. The post hook runs even when restic fails (it usually cleans up a dump file), but its own failure never masks restic’s error.
- list_
backup_ enabled - List installed services that have
backup_enabled = truein their metadata. The CLI’sryra backup run(no service argument) uses this to iterate every enabled install. - manifest_
sha256 - Hex SHA256 of the service’s
service.toml. Used as themanifest_sha:tag on each snapshot so a future restore can detect version skew between the snapshot and the currently-installed service definition. - parse_
env_ file - KEY=VALUE lines from a
.envfile; malformed lines are skipped the same way systemd’s EnvironmentFile= skips them. - plan_
backup_ restore - Plan a
ryra backup restore <service>invocation. - plan_
backup_ run - Plan a
ryra backup run <service>invocation. Errors loudly when: - restic_
backup - Execute a planned backup with restic. Ownership of container-owned
bind mounts is the pre-hook’s job (
podman unshare chown); by this point every file is readable by the invoking user. - restic_
restore - Execute a planned restore. Files come back owned by the invoking
user; the next container start’s
:Ure-chowns to the container’s USER. (Running insidepodman unsharewould preserve snapshot UIDs but fails chowning/homeoutside the namespace mapping.) - run_
hook - Run a pre/post backup or restore hook with the service’s
.envloaded, mirroring how quadlet ExecStartPre/Post scripts see it.