Aller au contenu
use-cases / rolling-24h-snapshots / hero
CRON · SNAPSHOTS · 24 GLISSANTES

Conservez les 24 dernières heures sous forme de 24 snapshots

Une entrée cron managée se déclenche @hourly. Elle envoie un POST d'un snapshot nommé auto-h$(date +%H). Les noms cyclent : auto-h00 jusqu'à auto-h23. Au bout d'un jour, chaque nouveau snapshot écrase celui de la veille à la même heure — et vous avez toujours les 24 dernières heures d'état, conservées à granularité horaire.

Lire la doc snapshots
use-cases / rolling-24h-snapshots / mechanism

Une ligne cron, une convention de nommage

Une entrée managée @hourly fait un curl vers l'URL des snapshots avec l'alias auto-h$(date +%H). L'alias entre intentionnellement en collision : à 13h demain, auto-h13 d'aujourd'hui est remplacé. Vingt-quatre emplacements nommés, pivotés automatiquement.

entrée cron · @hourly
POST · cron/entries
# Hoody Cron — planifier un snapshot horaire.
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"
  }'
le nom de l'heure est la clé de rotation
URL du snapshot · ce que le cron frappe vraiment
POST · containers/[id]/snapshots
# À 13:00 le cron tourne — voici la requête qu'il envoie :
curl -X POST \
  api.hoody.com/api/v1/containers/$ID/snapshots \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"alias": "auto-h13"}'

# Réponse :
200 OK · hourly-2026-05-04-13 created in 6s

Il n'y a pas de politique de rétention ni de janitor — l'alias auto-h13 est réutilisé toutes les 24 heures, ce qui fait rouler la fenêtre. L'API Hoody Snapshots prend en charge un champ alias optionnel sur POST /api/v1/containers/[id]/snapshots ; le réutiliser est tout le mécanisme.

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

Anatomie d'une heure roulante

Quatre étapes, toutes à l'intérieur d'un seul curl. Du tick cron au snapshot en quelques secondes.

0113:00:00Le tick cron se déclenche@hourly · entrée managée
0213:00:04Snapshot envoyé en POSTalias auto-h13
0313:00:06Étage matérialiséhourly-2026-05-04-13
04+24hLe même alias l'écraseaucun janitor nécessaire

Chaque tick prend quelques secondes. L'alias est la primitive de rotation — en réutilisant le même nom 24 heures plus tard, le snapshot à cet étage est remplacé sur place.

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

Trois pouvoirs d'une machine à remonter le temps à 24 étages

Ce que vous abandonnez en supprimant le runbook de sauvegarde, vous le récupérez sous une forme moins chère et plus honnête.

ÉCONOMIE

Les snapshots inactifs ne coûtent presque rien

Les snapshots sont sans état sur disque ; ils ne consomment ni CPU ni RAM en restant là. Vous payez le stockage de 24 copies du diff du conteneur, pas un service de sauvegarde qui tourne en permanence.

GRANULARITÉ

Une heure est l'unité du regret

Quand quelque chose tourne mal à 14:14, vous restaurez auto-h13 et vous êtes de retour à 13:00 — une minute avant que le problème ne commence. L'horaire est assez fin pour le rollback en production et assez grossier pour ne pas noyer le grand livre.

OPÉRATIONS

Pas de règles de rétention, pas d'audit

Il n'y a pas de politique de cycle de vie à écrire, pas de bucket S3 à provisionner, pas de revue de runbook annuelle. La convention de nommage est la règle de rétention. L'ensemble fixe d'alias est l'audit.

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

Ce que coûte la fenêtre glissante

Vingt-quatre snapshots d'un conteneur typique, conservés à granularité horaire. Les chiffres viennent de l'API Hoody Snapshots et d'un diff représentatif de 1,2 Go par heure.

  1. ÉTAGES CONSERVÉS24

    Chaque heure est un emplacement nommé. Après le premier jour, chaque nouveau snapshot écrase celui de la veille à la même heure — le compte ne grossit jamais.

  2. DE CRONTAB1 ligne

    Une entrée managée, planification @hourly, commande qui fait un curl vers l'URL des snapshots avec l'alias auto-h$(date +%H). C'est toute la rotation.

  3. JANITORS0

    Pas de job de purge, pas de politique expires_at, pas de configuration de cycle de vie. La collision d'alias fait tourner la fenêtre sur place ; rien ne s'accumule.

Selon l'API Hoody Container Snapshots : POST /api/v1/containers/[id]/snapshots accepte un alias optionnel (max 100 caractères) et une expiration optionnelle en jours. Cette page suppose la tarification par défaut des snapshots de conteneurs et un diff représentatif d'environ 1,2 Go par capture horaire ; vos tailles varieront selon la charge de travail.

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

Votre machine à remonter le temps a 24 étages et l'ascenseur est un curl.

avant · logiciel de sauvegardeaprès · une ligne cron
À QUOI ÇA RESSEMBLAITsnapshots RDS + politique de cycle de vie + bucket S3 + audit annuelquatre pièces mobiles · facturation par Go-jour · page de runbook
À QUOI ÇA RESSEMBLE MAINTENANT@hourly curl POST snapshots -d '["alias":"auto-h$(date +%H)"]'une ligne cron · une convention de nommage · 24 étages
Lire la doc snapshots
use-cases / rolling-24h-snapshots / replaces

Ce que cela remplace

Les outils standards vers lesquels vous vous tournez quand vous voulez une récupération horaire à un point dans le temps. Chacun vous facture un service ou une politique de rétention. Le modèle cron + alias ne vous facture ni l'un ni l'autre.

  • snapshots AWS RDSFacturation par Go-jour pour une fenêtre que vous pouvez faire tourner vous-même
  • jobs cron pgBackRestUn outil de sauvegarde, un fichier de config et un daemon pour ce qui est un curl
  • scripts custom de dump-and-rotateDu bash fragile qui liste, trie et purge par mtime
  • jobs S3 de sauvegarde lancés par cronPolitiques de cycle de vie, versioning de bucket et un rôle IAM à maintenir
  • outillage de snapshots BTRFSSnapshots au niveau filesystem qui nécessitent un hôte que vous contrôlez
  • Restic + cronUn binaire, un repo, un fichier de mot de passe et une politique de rétention
use-cases / rolling-24h-snapshots / cta

Supprimez le runbook de sauvegarde. Planifiez le @hourly. Les 24 dernières heures de votre conteneur existent sous forme de 24 étages nommés — et l'ascenseur est un seul curl.

Lire la doc snapshots
use-cases / rolling-24h-snapshots / related

Découvrez les autres