
ستون حاوية على خادم واحد
صندوق معادن عارية واحد يشغل عشرات إلى مئات حاويات Hoody. يجعل KSM و BTRFS dedup التكلفة الإضافية قريبة من الصفر.
مدخل cron مُدار يعمل @hourly. يُرسل 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 مُدار يستدعي curl على رابط اللقطات بـ alias auto-h$(date +%H). التصادم في الاسم مقصود: في الساعة 13 من الغد، يُستبدل auto-h13 الذي من اليوم. أربع وعشرون خانة مُسمّاة، تدور تلقائياً.
# 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"}' # 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 إلى لقطة في ثوانٍ.
كل نقرة تستغرق ثوانٍ. الـ alias هو بدائيّة الدوران — بإعادة استخدام الاسم نفسه بعد 24 ساعة، تُستبدَل اللقطة في ذلك الطابق في مكانها.
ما تتخلّى عنه بحذف runbook النسخ الاحتياطيّ، تستردّه على شكل شيء أرخص وأكثر صدقاً.
اللقطات عديمة الحالة على القرص؛ لا تستهلك CPU ولا RAM وهي ساكنة. أنت تدفع لتخزين 24 نسخة من فروقات الحاوية، لا لخدمة نسخ احتياطيّ تعمل طوال الوقت.
حين يحدث خطأ في 14:14، تستعيد auto-h13 وترجع إلى 13:00 — قبل دقيقة من بدء المشكلة. كل ساعة دقيقة بما يكفي للتراجع في الإنتاج، وخشنة بما يكفي لئلّا تُغرق السجلّ.
لا توجد سياسة دورة حياة لكتابتها، ولا حاوية S3 لتزويدها، ولا مراجعة سنويّة لـ runbook. عُرف التسمية هو قاعدة الاحتفاظ. مجموعة الـ alias الثابتة هي التدقيق.
أربع وعشرون لقطة لحاوية نموذجيّة، محفوظة بدقّة كل ساعة. الأرقام تأتي من واجهة Hoody Snapshots ومن فروقات نموذجيّة 1.2 جيجابايت في الساعة.
كل ساعة هي خانة مُسمّاة. بعد اليوم الأول، كل لقطة جديدة تكتب فوق لقطة الأمس في الساعة نفسها — العدد لا ينمو أبداً.
مدخل مُدار واحد، الجدول @hourly، الأمر يستدعي curl على رابط اللقطات بـ alias auto-h$(date +%H). هذا هو الدوران كلّه.
لا مهمّة تقليم، لا سياسة expires_at، لا تكوين دورة حياة. تصادم الـ alias يُدوِّر النافذة في مكانها؛ لا شيء يتراكم.
وفق واجهة Hoody Container Snapshots: POST /api/v1/containers/[id]/snapshots يقبل alias اختياريّاً (بحدّ أقصى 100 محرف) وانتهاء صلاحيّة اختياريّاً بالأيّام. هذه الصفحة تفترض تسعير اللقطات الافتراضيّ للحاويات وفروقات نموذجيّة ~1.2 جيجابايت لكل التقاط ساعة؛ أحجامك ستختلف حسب عبء العمل.
آلة زمنك بـ 24 طابقاً والمصعد هو curl.
الأدوات المعتادة حين تريد استرداداً بنقاط زمن كل ساعة. كلّ منها يفرض عليك خدمة أو سياسة احتفاظ. نموذج cron + alias لا يفرض أيّاً منهما.
احذف runbook النسخ الاحتياطيّ. اجدول الـ @hourly. آخر 24 ساعة من حاويتك توجد على شكل 24 طابقاً مُسمّى — والمصعد هو curl واحد.