Home Writing Lab About Skills CV Contact
stable cli · self v1.2.0

Backup Rotator

A small CLI for rotating, verifying, and pruning local backups. Runs on a cron. Designed to be boring, predictable, and impossible to misconfigure silently.

A small Python CLI for the boring but important job of keeping backups honest. The tool rotates a set of backup targets on a schedule, verifies each one (checksum + smoke test), prunes old copies, and emits a single status line per run.

Why

Backups that have never been restored are not backups. This tool exists to make the verify step mandatory and the restore step easy. Every backup run produces a status that can be grepped; every verification is logged; every prune is auditable.

What it does

  • rotate: take a new backup, prune old ones per a retention policy.
  • verify: read back the latest backup, check the checksum, run a smoke test (configurable per target).
  • prune: drop backups older than the retention policy.
  • status: print a one-line status per target — last backup time, last verify time, last result.

Stack

Python · Click · rclone (for the actual transfer) · systemd timer. Runs on the Hetzner VPS as a daily job. Status is written to a JSON file that a separate dashboard could read.

Auth

No auth. The tool is a CLI; auth is at the OS layer (it runs on the VPS as a dedicated user with restricted permissions).


Stack

python · click · rclone · systemd

Auth

No auth — open access.

Source

https://github.com/hector-sanchez-eu/backup-rotator