النسخ الاحتياطي
كل ليلة يلتقط Kept لقطة restic واحدة: مشفّرة بكلمة مرور تختارها، ومن دون تكرار (فالليلة التي لا جديد فيها لا تضيف شيئًا تقريبًا)، وتُرسل إلى مكان غير قرص الخادم نفسه.
ما تحويه اللقطة
Section titled “ما تحويه اللقطة”- قاعدة البيانات، مفرَّغة من لحظة واحدة متسقة، مع بيان بعدد صفوف كل جدول وبصمة لبياناته، كي تُثبت الاستعادة أنها أعادت ما كان موجودًا بالضبط.
- الملفات (الصور والفواتير والمستندات)، حين تُخزَّن على قرص الخادم. أما مع تخزين الملفات في S3 فلا: راجع أدناه.
- نسخة مقروءة من كل موقع: صفحات ويب وجداول وصور مصغّرة وفواتير تُفتح في المتصفح بلا شيء سوى restic. راجع اقرأ جردك باستخدام restic وحده.
المفاتيح ليست في النسخة الاحتياطية. احفظ حزمة الاسترداد في مكان آخر.
إلى أين تذهب
Section titled “إلى أين تذهب”| الوجهة | تُضبط بـ | مستودع restic |
|---|---|---|
| مجلد: قرص آخر، أو مشاركة NAS مركّبة على الخادم | KEPT_BACKUP_DIR (مسار مطلق خارج KEPT_DATA_DIR) |
<directory>/restic |
| حاوية متوافقة مع S3: AWS، أو نقطة S3 لدى مزوّد آخر | KEPT_BACKUP_S3_BUCKET وبقية متغيرات KEPT_BACKUP_S3_* |
restic/ تحت KEPT_BACKUP_S3_PREFIX |
| خادم SFTP | KEPT_BACKUP_SFTP (بصيغة sftp: في restic) وKEPT_BACKUP_SFTP_KEY_FILE وKEPT_BACKUP_SFTP_KNOWN_HOSTS |
الموقع الذي تحدده |
اختر وجهة واحدة، ويُفضَّل جهاز آخر أو مكان آخر: يُرفض المجلد الموجود على قرص بيانات Kept نفسه، وتنبّه صفحة الحالة حين تشارك الوجهة قرصًا معه. يُتوقع أن تعمل نقاط S3 لدى Backblaze B2 وCloudflare R2 لكنها لم تُختبر بعد. ويثبّت SFTP مفتاح المضيف من ملف known_hosts ولا يتصل إلا إن طابقه.
التفعيل
Section titled “التفعيل”يضبط مديرو النسخة الوجهة وكلمة المرور في الإدارة ← النسخ الاحتياطي، عبر HTTPS، بعد الإقرار بحزمة الاسترداد. يتحقق زر «اختبار» من أن Kept يستطيع فتح المستودع (أو إنشاءه)، ويشغّل «انسخ الآن» نسخة فورًا. ومتغير البيئة يتقدّم على الشاشة ويظهر فيها مقفلًا، فيستطيع المشغّل تثبيت الوجهة في إعداد النشر.
كلمة المرور من ١٢ محرفًا على الأقل (KEPT_BACKUP_PASSWORD، أو تُضبط من الشاشة). لا كلمة
مرور، لا نسخة احتياطية: لا يكتب Kept نسخة غير مشفّرة أبدًا. وإن ضاعت كلمة المرور صارت النسخة
غير مقروءة، ولهذا هي في حزمة الاسترداد.
يعمل النسخ الاحتياطي في العامل بصلاحية مالك قاعدة البيانات، فيحتاج العامل إلى
KEPT_OWNER_DATABASE_URL أيضًا. ومع Compose، يمرّر compose.yaml أصلًا كل متغيرات
KEPT_BACKUP_* من .env إلى Kept وإلى migrate (الذي يلتقط لقطة قبل الترقية)؛ ويضيف ملف
compose.override.yaml بجانبه بيانات دخول المالك، ولوجهة المجلد التركيبَ على الخدمتين:
services: kept: environment: KEPT_OWNER_DATABASE_URL: postgres://kept_owner:${KEPT_DB_OWNER_PASSWORD}@db:5432/kept volumes: - /mnt/backup/kept:/backups migrate: volumes: - /mnt/backup/kept:/backupsثم اضبط الوجهة وكلمة المرور من الشاشة، أو ثبّتهما في .env
(KEPT_BACKUP_DIR=/backups وKEPT_BACKUP_PASSWORD=…).
ويجب أن يملك مستخدمُ Kept المجلد:
sudo mkdir -p /mnt/backup/keptsudo chown 10001:10001 /mnt/backup/keptsudo chmod 700 /mnt/backup/keptمتى وإلى متى
Section titled “متى وإلى متى”- متى: كل ليلة في الوقت المضبوط في الإدارة ← النسخ الاحتياطي، بصيغة
HH:MMبتوقيت UTC (الافتراضي02:30). يسري الوقت الجديد من الليلة التالية بلا إعادة تشغيل؛ ويثبّتهKEPT_BACKUP_TIMEبدلًا من ذلك. - «انسخ الآن» يشغّل نسخة فورًا؛ والضغط عليه ثانيةً بينما تنتظر تلك النسخة أو تعمل يُرفض («نسخ احتياطي يجري الآن») بدل أن تُصفّ مرتين.
- مدة الاحتفاظ: أحدث لقطة من كل يوم من آخر ٧ أيام، وكل أسبوع من آخر ٤ أسابيع، وكل شهر من آخر ٦
أشهر (
KEPT_BACKUP_KEEP_DAILYو_WEEKLYو_MONTHLY). ويُقرأKEPT_BACKUP_KEEPالقديم عددًا يوميًا لإصدار واحد. وتحتفظ لقطات ما قبل الترقية بآخر ٣ منها. - النسخة الصغيرة على نحو مريب (تفريغ أصغر من نصف حجم آخر نسخة سليمة، أو أشياء أو أماكن أو ملفات أقل بكثير) تُلتقط رغم ذلك، لكن لا يُحذف شيء قديم تلك الليلة ويُنبَّه المديرون، فلا تستطيع ليلة سيئة أن تُزيح اللقطات السليمة.
المراقبة
Section titled “المراقبة”تعرض الإدارة ← الحالة آخر نسخة وعمرها، وعدد اللقطات، وحجم المستودع، وآخر تمرين استعادة، والأقراص. ويُنبَّه المديرون بالبريد والإشعارات حين:
| التنبيه | متى |
|---|---|
| فشل النسخ الاحتياطي | تفشل عملية نسخ |
| نسخة قديمة | لا نسخة سليمة منذ ٣٦ ساعة مع وجود وجهة |
| حجم مريب | جاءت نسخة أصغر بكثير من آخر نسخة سليمة |
| مساحة القرص منخفضة | امتلأ قرص البيانات أو مجلد الوجهة بنسبة ٨٥٪ |
| إصدارات الحاوية معطّلة | الملفات في S3 والحاوية لا تحتفظ بالإصدارات القديمة |
| حان تمرين الاستعادة | لا تمرين استعادة منذ ٣٠ يومًا |
حين تكون الملفات في S3
Section titled “حين تكون الملفات في S3”يَنسخ restic الملفات الموجودة على القرص، لا الكائنات في حاوية. فمع KEPT_STORAGE=s3 تحوي اللقطة
قاعدة البيانات والبيان والنسخة المقروءة، والحاوية نفسها هي التي تحفظ الملفات: فعّل إصدارات
الحاوية (والنسخ المتماثل إلى منطقة أخرى إن وفّره مزوّدك). يتحقق Kept من الإصدارات في كل عملية
وينبّه ما دامت معطّلة. ويقارن الفحص الأسبوعي وتمرين الاستعادة بصمة كل ملف في البيان بما في الحاوية.
نسخ المرحلة التجريبية
Section titled “نسخ المرحلة التجريبية”النسخ التي أخذتها النسخة التجريبية قبل restic (runs/ وblobs/ بجانب مجلد restic/ الجديد) لا تُكتب مجددًا،
وتبقى قابلة للاستعادة بالأمر kept admin restore --legacy <id> لإصدار واحد. احذفها حين تجتاز لقطة
restic تمرين استعادة.