انتقل إلى المحتوى
use-cases / rolling-24h-snapshots / hero
CRON · SNAPSHOTS · ROLLING 24

احتفظ بآخر 24 ساعة على شكل 24 لقطة

مدخل cron مُدار يعمل @hourly. يُرسل POST بلقطة باسم auto-h$(date +%H). الأسماء تدور: من auto-h00 حتى auto-h23. بعد يوم، تكتب كل لقطة جديدة فوق لقطة الأمس في الساعة نفسها — وتظلّ آخر 24 ساعة من الحالة لديك، محفوظة بدقّة كل ساعة.

اقرأ توثيق اللقطات
use-cases / rolling-24h-snapshots / mechanism

سطر cron واحد، عُرف تسمية واحد

مدخل @hourly مُدار يستدعي curl على رابط اللقطات بـ alias auto-h$(date +%H). التصادم في الاسم مقصود: في الساعة 13 من الغد، يُستبدل auto-h13 الذي من اليوم. أربع وعشرون خانة مُسمّاة، تدور تلقائياً.

مدخل cron · @hourly
POST · cron/entries
# 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"
  }'
اسم الساعة هو مفتاح الدوران
رابط اللقطة · ما يطرقه cron فعلاً
POST · containers/[id]/snapshots
# في 13:00 cron يعمل — هذا هو الطلب الذي يرسله:
curl -X POST \
  api.hoody.com/api/v1/containers/$ID/snapshots \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"alias": "auto-h13"}'

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

لا توجد سياسة احتفاظ ولا منظِّف — alias auto-h13 يُعاد استخدامه كل 24 ساعة، وهذا ما يجعل النافذة تدور. واجهة Hoody Snapshots تدعم حقل alias اختيارياً عند POST /api/v1/containers/[id]/snapshots؛ إعادة استخدامه هي الآليّة بأكملها.

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

تشريح ساعة دوّارة واحدة

أربع خطوات، كلّها داخل curl واحد. من نقرة cron إلى لقطة في ثوانٍ.

0113:00:00نقرة cron تنطلق@hourly · مدخل مُدار
0213:00:04اللقطة أُرسلت بـ POSTalias auto-h13
0313:00:06الطابق تجسّدhourly-2026-05-04-13
04+24hالـ alias نفسه يكتب فوقهلا حاجة إلى منظِّف

كل نقرة تستغرق ثوانٍ. الـ alias هو بدائيّة الدوران — بإعادة استخدام الاسم نفسه بعد 24 ساعة، تُستبدَل اللقطة في ذلك الطابق في مكانها.

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

ثلاث قُوى لآلة زمن من 24 طابقاً

ما تتخلّى عنه بحذف runbook النسخ الاحتياطيّ، تستردّه على شكل شيء أرخص وأكثر صدقاً.

ECONOMICS

اللقطات الخاملة لا تكلّف شيئاً تقريباً

اللقطات عديمة الحالة على القرص؛ لا تستهلك CPU ولا RAM وهي ساكنة. أنت تدفع لتخزين 24 نسخة من فروقات الحاوية، لا لخدمة نسخ احتياطيّ تعمل طوال الوقت.

GRANULARITY

ساعة واحدة هي وحدة الندم

حين يحدث خطأ في 14:14، تستعيد auto-h13 وترجع إلى 13:00 — قبل دقيقة من بدء المشكلة. كل ساعة دقيقة بما يكفي للتراجع في الإنتاج، وخشنة بما يكفي لئلّا تُغرق السجلّ.

OPERATIONS

لا قواعد احتفاظ، لا تدقيق

لا توجد سياسة دورة حياة لكتابتها، ولا حاوية S3 لتزويدها، ولا مراجعة سنويّة لـ runbook. عُرف التسمية هو قاعدة الاحتفاظ. مجموعة الـ alias الثابتة هي التدقيق.

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

ما تكلّفه النافذة الدوّارة

أربع وعشرون لقطة لحاوية نموذجيّة، محفوظة بدقّة كل ساعة. الأرقام تأتي من واجهة Hoody Snapshots ومن فروقات نموذجيّة 1.2 جيجابايت في الساعة.

  1. FLOORS RETAINED24

    كل ساعة هي خانة مُسمّاة. بعد اليوم الأول، كل لقطة جديدة تكتب فوق لقطة الأمس في الساعة نفسها — العدد لا ينمو أبداً.

  2. OF CRONTAB1 line

    مدخل مُدار واحد، الجدول @hourly، الأمر يستدعي curl على رابط اللقطات بـ alias auto-h$(date +%H). هذا هو الدوران كلّه.

  3. JANITORS0

    لا مهمّة تقليم، لا سياسة expires_at، لا تكوين دورة حياة. تصادم الـ alias يُدوِّر النافذة في مكانها؛ لا شيء يتراكم.

وفق واجهة Hoody Container Snapshots: POST /api/v1/containers/[id]/snapshots يقبل alias اختياريّاً (بحدّ أقصى 100 محرف) وانتهاء صلاحيّة اختياريّاً بالأيّام. هذه الصفحة تفترض تسعير اللقطات الافتراضيّ للحاويات وفروقات نموذجيّة ~1.2 جيجابايت لكل التقاط ساعة؛ أحجامك ستختلف حسب عبء العمل.

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

آلة زمنك بـ 24 طابقاً والمصعد هو curl.

قبل · برنامج النسخ الاحتياطيّبعد · سطر cron واحد
ما كانت تبدو عليهRDS snapshots + lifecycle policy + S3 bucket + annual auditأربعة أجزاء متحرّكة · فوترة بالجيجابايت-اليوم · صفحة runbook
ما تبدو عليه الآن@hourly curl POST snapshots -d '["alias":"auto-h$(date +%H)"]'سطر cron واحد · عُرف تسمية واحد · 24 طابقاً
اقرأ توثيق اللقطات
use-cases / rolling-24h-snapshots / replaces

ما يحلّ هذا محلّه

الأدوات المعتادة حين تريد استرداداً بنقاط زمن كل ساعة. كلّ منها يفرض عليك خدمة أو سياسة احتفاظ. نموذج cron + alias لا يفرض أيّاً منهما.

  • AWS RDS snapshotsفوترة بالجيجابايت-اليوم لنافذة يمكنك تدويرها بنفسك
  • pgBackRest cron jobsأداة نسخ احتياطيّ وملفّ تكوين وعفريت لما هو curl واحد
  • نصوص dump-and-rotate مخصصةbash هشّ يُسرد ويُرتّب ويُقلّم وفق mtime
  • cron-spawning S3 backup jobsسياسات دورة حياة وإصدار سلال ودور IAM للصيانة
  • BTRFS snapshot toolingلقطات على مستوى نظام الملفّات تحتاج مضيفاً تتحكّم به
  • Restic + cronثنائيّ ومستودع وملفّ كلمة مرور وسياسة احتفاظ
use-cases / rolling-24h-snapshots / cta

احذف runbook النسخ الاحتياطيّ. اجدول الـ @hourly. آخر 24 ساعة من حاويتك توجد على شكل 24 طابقاً مُسمّى — والمصعد هو curl واحد.

اقرأ توثيق اللقطات
use-cases / rolling-24h-snapshots / related

اقرأ الآخرين