
一台服务器上运行 60 个容器
一个裸金属服务器运行数十到数百个 Hoody 容器。KSM 和 BTRFS 去重使边际成本接近零。
一条受管理的 cron 条目每小时触发。它 POST 一个以 auto-h$(date +%H) 命名的快照。名字循环:auto-h00 到 auto-h23。一天后,每个新快照覆盖昨天同一小时的那个 —— 你永远拥有过去 24 小时的状态,以小时粒度保留。
{ "name": "hourly-2026-05-04-13", "alias": "auto-h13", "created_at": "13:00:04Z", "size": 1331691520 }
电梯停 24 层 —— 昨天的某个小时被今天的同一小时覆盖
一条 @hourly 受管理条目用 auto-h$(date +%H) 作为别名 curl 快照 URL。别名是有意冲突的:明天 13 点时,今天的 auto-h13 被替换。24 个命名槽位,自动轮换。
# Hoody Cron — 安排一个每小时的快照。 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" }'
# 13:00 cron 运行 —— 它发送的就是这个请求: curl -X POST \ api.hoody.com/api/v1/containers/$ID/snapshots \ -H "Authorization: Bearer $TOKEN" \ -d '{"alias": "auto-h13"}' # 响应: → 200 OK · hourly-2026-05-04-13 created in 6s
没有保留策略,也没有清道夫 —— 别名 auto-h13 每 24 小时被复用一次,正是这一点让窗口滚动起来。Hoody Snapshots API 在 POST /api/v1/containers/[id]/snapshots 上支持一个可选的 alias 字段;复用它就是整个机制。
四步,全都在一次 curl 之内。从 cron 触发到快照,只要数秒。
每次触发只要数秒。别名是轮换的原语 —— 24 小时后复用同样的名字,该楼层的快照就会被原地替换。
你删掉备份手册放弃的东西,会以更便宜更诚实的方式拿回来。
快照在磁盘上是无状态的;它们在那里时不烧 CPU 也不占内存。你为容器差量的 24 份副本支付存储,而不是为一个全天运行的备份服务付费。
14:14 出问题时,你恢复 auto-h13,就回到了 13:00 —— 问题开始前一分钟。小时粒度对生产回滚来说足够细,对账本来说又足够粗,不会被淹没。
没有生命周期策略要写,没有 S3 桶要开,没有年度手册评审。命名约定就是保留规则。固定的别名集合就是审计。
一个典型容器的 24 个快照,以小时粒度保留。数字来自 Hoody Snapshots API 和每小时约 1.2 GB 的代表性差量。
每小时是一个命名槽位。第一天之后,每个新快照都覆盖昨天同一小时的那个 —— 数量永不增长。
一条受管理条目,@hourly 调度,命令用别名 auto-h$(date +%H) curl 快照 URL。整个轮换就是这样。
无清理任务、无 expires_at 策略、无生命周期配置。别名冲突原地轮换窗口;什么都不会累积。
依据 Hoody Container Snapshots API:POST /api/v1/containers/[id]/snapshots 接受可选的 alias(最多 100 字符)和可选的过期天数。本页假设容器的默认快照定价和每次小时捕获约 1.2 GB 的代表性差量;实际大小会随负载而变。
你的时光机有 24 层,电梯是一条 curl。
想要按小时进行时间点恢复时常会去够的工具。每一个都向你收一份服务费或一份保留策略费。cron + 别名模型两个都不收。
删掉备份手册。安排 @hourly。你容器的过去 24 小时,以 24 个命名楼层存在 —— 而电梯就是一条 curl。