Zum Inhalt springen
use-cases / rolling-24h-snapshots / hero
CRON · SNAPSHOTS · ROLLING 24

Behalte die letzten 24 Stunden als 24 Snapshots

Ein Managed-Cron-Eintrag feuert @hourly. Er POSTet einen Snapshot mit dem Namen auto-h$(date +%H). Die Namen rotieren: auto-h00 bis auto-h23. Nach einem Tag überschreibt jeder neue Snapshot den von gestern zur gleichen Stunde — und du hast immer die letzten 24 Stunden des States, mit stündlicher Granularität.

Snapshots-Docs lesen
use-cases / rolling-24h-snapshots / mechanism

Eine Cron-Zeile, eine Namenskonvention

Ein @hourly Managed Entry curlt die Snapshots-URL mit alias auto-h$(date +%H). Der Alias kollidiert absichtlich: Morgen um 13 Uhr wird auto-h13 von heute ersetzt. 24 benannte Slots, automatisch rotiert.

Cron-Eintrag · @hourly
POST · cron/entries
# Hoody Cron — plane einen stündlichen Snapshot.
curl -X POST \
  cron.containers.hoody.com/users/root/entries \
  -H "Content-Type: application/json" \
  -d '{
    "schedule": "@hourly",
    "command": "curl -X POST $SNAP_URL -d '{\"alias\":\"auto-h$(date +%H)\"}'",
    "comment": "rolling 24h snapshot"
  }'
der Stundenname ist der Rotations-Key
Snapshot-URL · was der Cron tatsächlich trifft
POST · containers/[id]/snapshots
# Um 13:00 läuft der Cron — das ist der Request, den er sendet:
curl -X POST \
  api.hoody.com/api/v1/containers/$ID/snapshots \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"alias": "auto-h13"}'

# Antwort:
200 OK · hourly-2026-05-04-13 created in 6s

Es gibt keine Retention-Policy und keinen Janitor — der Alias auto-h13 wird alle 24 Stunden wiederverwendet, und das ist es, was das Fenster rollen lässt. Die Hoody Snapshots API unterstützt ein optionales alias-Feld auf POST /api/v1/containers/[id]/snapshots; die Wiederverwendung ist der gesamte Mechanismus.

use-cases / rolling-24h-snapshots / anatomy

Anatomie einer rollenden Stunde

Vier Schritte, alle innerhalb eines einzigen curl. Vom Cron-Tick zum Snapshot in Sekunden.

0113:00:00Cron-Tick feuert@hourly · Managed Entry
0213:00:04Snapshot POSTetalias auto-h13
0313:00:06Etage materialisierthourly-2026-05-04-13
04+24hGleicher Alias überschreibt ihnkein Janitor nötig

Jeder Tick dauert Sekunden. Der Alias ist das Rotations-Primitive — durch Wiederverwendung desselben Namens 24 Stunden später wird der Snapshot auf dieser Etage in-place ersetzt.

use-cases / rolling-24h-snapshots / powers

Drei Kräfte einer 24-Etagen-Zeitmaschine

Was du aufgibst, indem du das Backup-Runbook löschst, bekommst du als etwas Günstigeres und Ehrlicheres zurück.

ECONOMICS

Idle-Snapshots kosten fast nichts

Snapshots sind auf der Disk stateless; sie verbrennen weder CPU noch RAM, während sie dort liegen. Du zahlst für den Storage von 24 Kopien des Container-Diffs, nicht für einen Backup-Service, der die ganze Zeit läuft.

GRANULARITY

Eine Stunde ist die Einheit der Reue

Wenn um 14:14 etwas schiefgeht, stellst du auto-h13 wieder her und bist zurück bei 13:00 — eine Minute bevor das Problem begann. Stündlich ist feinkörnig genug für Production-Rollback und grobkörnig genug, um das Ledger nicht zu ertränken.

OPERATIONS

Keine Retention-Regeln, kein Audit

Es gibt keine Lifecycle-Policy zu schreiben, keinen S3-Bucket zu provisionieren, kein jährliches Runbook-Review. Die Namenskonvention ist die Retention-Regel. Das feste Alias-Set ist das Audit.

use-cases / rolling-24h-snapshots / economics

Was das rollende Fenster kostet

24 Snapshots eines typischen Containers, mit stündlicher Granularität aufbewahrt. Die Zahlen kommen aus der Hoody Snapshots API und einem repräsentativen 1.2 GB Diff pro Stunde.

  1. AUFBEWAHRTE ETAGEN24

    Jede Stunde ist ein benannter Slot. Nach Tag eins überschreibt jeder neue Snapshot den von gestern zur gleichen Stunde — die Anzahl wächst nie.

  2. CRONTAB1 Zeile

    Ein Managed Entry, Schedule @hourly, Command curlt die Snapshots-URL mit alias auto-h$(date +%H). Das ist die gesamte Rotation.

  3. JANITORS0

    Kein Prune-Job, keine expires_at-Policy, keine Lifecycle-Config. Die Alias-Kollision rotiert das Fenster in-place; nichts häuft sich an.

Gemäß Hoody Container Snapshots API: POST /api/v1/containers/[id]/snapshots akzeptiert ein optionales alias (max 100 Zeichen) und ein optionales expiry in Tagen. Diese Seite geht vom Standard-Snapshot-Pricing der Container und einem repräsentativen ~1.2 GB Diff pro stündlichem Capture aus; deine Größen variieren mit dem Workload.

use-cases / rolling-24h-snapshots / punchline

Deine Zeitmaschine hat 24 Etagen und der Aufzug ist ein curl.

vorher · Backup-Softwarenachher · eine Cron-Zeile
WIE ES FRÜHER AUSSAHRDS-Snapshots + Lifecycle-Policy + S3-Bucket + jährliches Auditvier bewegliche Teile · Per-GB-Tag-Billing · Runbook-Seite
WIE ES JETZT AUSSIEHT@hourly curl POST snapshots -d '["alias":"auto-h$(date +%H)"]'eine Cron-Zeile · eine Namenskonvention · 24 Etagen
Snapshots-Docs lesen
use-cases / rolling-24h-snapshots / replaces

Was das ersetzt

Die Standard-Greift-Tools, wenn du stündliche Point-in-Time-Recovery willst. Jedes davon stellt dir einen Service oder eine Retention-Policy in Rechnung. Das Cron + Alias-Modell stellt dir keines davon in Rechnung.

  • AWS RDS SnapshotsPer-GB-Tag-Billing für ein Fenster, das du selbst rotieren kannst
  • pgBackRest Cron-JobsEin Backup-Tool, eine Config-Datei und ein Daemon für das, was ein curl ist
  • Custom Dump-and-Rotate-SkripteFragile Bash, die nach mtime listet, sortiert und prunet
  • Cron-spawnende S3-Backup-JobsLifecycle-Policies, Bucket-Versioning und eine zu pflegende IAM-Rolle
  • BTRFS-Snapshot-ToolingFilesystem-Level-Snapshots, die einen Host brauchen, den du kontrollierst
  • Restic + CronEine Binary, ein Repo, eine Passwort-Datei und eine Retention-Policy
use-cases / rolling-24h-snapshots / cta

Lösch das Backup-Runbook. Plane den @hourly. Die letzten 24 Stunden deines Containers existieren als 24 benannte Etagen — und der Aufzug ist ein einziges curl.

Snapshots-Docs lesen
use-cases / rolling-24h-snapshots / related

Lies die anderen