Oore CI
Operate OoreMaintain

Restore a backup

Restore a verified default-layout Oore state backup and its managed runner credentials.

Restore replaces the default managed database and encryption key. A current Complete backup also replaces its matching managed-runner.json. Restore does not restore artifact payloads. Rehearse this task before an incident.

State replacement

Restoring changes the live instance state to the selected backup. Keep the current data and a second verified archive until the restored instance passes verification.

What you need

  • A backup that passes oore backup verify.
  • Console access to the backend Mac.
  • The default managed data layout.
  • A maintenance window in which the daemon and runner can remain stopped.

1. Verify and stop the services

oore backup verify --input /Volumes/oore-backups/oore-state.tar.gz
sudo launchctl bootout system/build.oore.oore-runner
sudo launchctl bootout system/build.oore.oored

Confirm oored is no longer running. Restore refuses to continue while the daemon or database is open.

2. Restore the state

oore backup restore --input /Volumes/oore-backups/oore-state.tar.gz

The command verifies the archive again, replaces the database and key with rollback protection, and restores the previous files if replacement fails. It updates a matching managed runner config in the same protected operation.

Oore writes a private restore journal before it replaces live files. It syncs the new files and each directory boundary. A later backup or restore command automatically rolls back an unfinished transaction or completes committed cleanup. Stop oored before that recovery command.

Restore supports a missing live database. It still validates the database, key, and managed runner config inside the selected archive before replacement.

An older backup can lack managed-runner.json. Oore then quarantines only the exact config owned by the Ready Complete runner service. If the live database exists, the config must also match its registration. The command prints the quarantine path and the required recovery command.

An archive with managed-runner.json uses oore-backup-v2. Use Oore v0.1.42 or newer to verify or restore it. Oore still accepts older v1 backups.

3. Start the services

Start the daemon:

sudo launchctl bootstrap system /Library/LaunchDaemons/build.oore.oored.plist

If restore did not report managed runner recovery, start the runner:

sudo launchctl bootstrap system /Library/LaunchDaemons/build.oore.oore-runner.plist

If restore prints Managed runner recovery required, run this command instead:

oore setup

Setup repairs the managed runner registration and writes a new private config.

Verify the result

curl --fail-with-body http://127.0.0.1:8787/readyz
oore status

Confirm the expected projects and users are present, the managed runner is online, and a known artifact backup can be restored through its separate storage procedure.

Troubleshooting

If restore says the database is open, stop the remaining oored process before retrying. If readiness fails after restore, stop both services, preserve the logs and current files, and do not discard the pre-restore state.

If restore refuses an unrelated runner config, move or repair that config before retrying. Oore does not replace runner.json or custom-target files.

Next step

Monitor Oore and run one known build.