انتقل إلى المحتوى
النوعإمكان جديد
المرحلةالإنتاج
مستوى الصعوبةبسيط
المهمةنسخ احتياطيّ للحالة
لـمطورو الواجهة الخلفية
لـDevOps والبنية التحتية
الخدماتCron
الخدماتاللقطات
لماذا Hoodyالسفر عبر الزمن باللقطات
لماذا Hoodyاقتصاديات الحاوية
النوعإمكان جديد
المرحلةالإنتاج
مستوى الصعوبةبسيط
المهمةنسخ احتياطيّ للحالة
لـمطورو الواجهة الخلفية
لـDevOps والبنية التحتية
الخدماتCron
الخدماتاللقطات
لماذا Hoodyالسفر عبر الزمن باللقطات
لماذا Hoodyاقتصاديات الحاوية
النوعإمكان جديد
المرحلةالإنتاج
مستوى الصعوبةبسيط
المهمةنسخ احتياطيّ للحالة
لـمطورو الواجهة الخلفية
لـDevOps والبنية التحتية
الخدماتCron
الخدماتاللقطات
لماذا Hoodyالسفر عبر الزمن باللقطات
لماذا Hoodyاقتصاديات الحاوية
النوعإمكان جديد
المرحلةالإنتاج
مستوى الصعوبةبسيط
المهمةنسخ احتياطيّ للحالة
لـمطورو الواجهة الخلفية
لـDevOps والبنية التحتية
الخدماتCron
الخدماتاللقطات
لماذا Hoodyالسفر عبر الزمن باللقطات
لماذا Hoodyاقتصاديات الحاوية
CRON · لقطات · متجدّدة 24

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

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

اقرأ توثيق اللقطات

سطر 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؛ إعادة استخدامه هي الآليّة بأكملها.

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

أربع خطوات، كلّها داخل 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 ساعة، تُستبدَل اللقطة في ذلك الطابق في مكانها.

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

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

ECONOMICS

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

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

GRANULARITY

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

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

OPERATIONS

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

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

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

أربع وعشرون لقطة لحاوية نموذجيّة، محفوظة بدقّة كل ساعة. الأرقام تأتي من واجهة 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 جيجابايت لكل التقاط ساعة؛ أحجامك ستختلف حسب عبء العمل.

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

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

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

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

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

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

اقرأ توثيق اللقطات

اقرأ حالات أخرى