الملفات

358 أسطر
15 KiB
Markdown
خام الرابط الدائم اللوم التاريخ

هذا الملف يحتوي على أحرف Unicode غير مرئية

هذا الملف يحتوي على أحرف Unicode غير مرئية لا يمكن التمييز بينها بعين الإنسان ولكن قد تتم معالجتها بشكل مختلف بواسطة الحاسوب. إذا كنت تعتقد أن هذا مقصود، يمكنك تجاهل هذا التحذير بأمان. استخدم زر الهروب للكشف عنها.

# استراتيجية النسخ الاحتياطي والاستعادة - Ghaymah Backup & Recovery
## مع RPO/RTO وقاعدة 3-2-1
---
## 1. فهم RPO و RTO
### تعريفات أساسية
```
┌─────────────────────────────────────────────────────────────────────┐
│ │
│ آخر نسخة الحادثة استعادة الخدمة │
│ احتياطية ↓ ↓ │
│ ↓ ↓ ↓ │
│ ─────●───────────────●────────────────────●─────────────→ الوقت │
│ │ │ │ │
│ │←──── RPO ────→│←────── RTO ───────→│ │
│ │ │ │ │
│ البيانات التي وقت وقت العودة │
│ قد تُفقد الحادثة للعمل │
│ │
└─────────────────────────────────────────────────────────────────────┘
```
| المصطلح | التعريف | مثال |
|---------|---------|------|
| **RPO** (Recovery Point Objective) | أقصى كمية بيانات يمكن خسارتها | RPO = 1 ساعة → نسخ احتياطي كل ساعة |
| **RTO** (Recovery Time Objective) | أقصى وقت للعودة للعمل | RTO = 4 ساعات → يجب استعادة الخدمة خلال 4 ساعات |
---
## 2. قاعدة 3-2-1 للنسخ الاحتياطي
```
┌─────────────────────────────────────────────────────────────────────┐
│ قاعدة 3-2-1 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 3⃣ ثلاث نسخ من البيانات │
│ ├── النسخة الأصلية (Production) │
│ ├── النسخة الاحتياطية الأولى (Local Backup) │
│ └── النسخة الاحتياطية الثانية (Remote Backup) │
│ │
│ 2⃣ نوعان مختلفان من وسائط التخزين │
│ ├── Block Storage (SSD) │
│ └── Object Storage (S3-compatible) │
│ │
│ 1⃣ نسخة واحدة على الأقل خارج الموقع (Offsite) │
│ └── منطقة جغرافية مختلفة أو مزود سحابي آخر │
│ │
└─────────────────────────────────────────────────────────────────────┘
```
---
## 3. تطبيق الاستراتيجية على غيمة
### البنية المقترحة
```
┌─────────────────────────────────────────────────────────────────────┐
│ غيمة Cloud │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ Production │ ← النسخة الأصلية (1) │
│ │ Block Storage │ │
│ │ (me-riyadh-1) │ │
│ └────────┬────────┘ │
│ │ │
│ │ نسخ كل ساعة │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Local Backup │ ← النسخة الاحتياطية (2) - وسيط مختلف │
│ │ Object Storage │ │
│ │ (me-riyadh-1) │ │
│ └────────┬────────┘ │
│ │ │
│ │ نسخ يومي │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Offsite Backup │ ← النسخة الخارجية (3) - موقع مختلف │
│ │ Object Storage │ │
│ │ (me-jeddah-1) │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
```
### تكوين النسخ الاحتياطي
```yaml
# backup-config.yaml
backup_strategy:
name: "3-2-1 Backup Strategy"
# النسخة الأصلية
production:
type: block-storage
location: me-riyadh-1
volume: prod-data
# النسخة الاحتياطية المحلية
local_backup:
type: object-storage
location: me-riyadh-1
bucket: backups-local
schedule:
frequency: hourly
retention: 72 # 72 ساعة = 3 أيام
encryption: AES-256
# النسخة الخارجية
offsite_backup:
type: object-storage
location: me-jeddah-1 # منطقة مختلفة
bucket: backups-offsite
schedule:
frequency: daily
time: "02:00"
retention: 30 # 30 يوم
encryption: AES-256
# أهداف الاستعادة
objectives:
rpo: 1h # أقصى خسارة = ساعة واحدة
rto: 4h # أقصى وقت استعادة = 4 ساعات
```
---
## 4. تنفيذ النسخ الاحتياطي على غيمة
### أ. إنشاء Buckets للنسخ الاحتياطي
```bash
# إنشاء bucket محلي
ghaymah storage bucket create backups-local \
--region me-riyadh-1 \
--encryption AES-256 \
--versioning enabled
# إنشاء bucket خارجي
ghaymah storage bucket create backups-offsite \
--region me-jeddah-1 \
--encryption AES-256 \
--versioning enabled
```
### ب. إعداد جدول النسخ الاحتياطي
```bash
# نسخ احتياطي كل ساعة (محلي)
ghaymah backup schedule create \
--name hourly-local \
--source prod-data \
--destination backups-local \
--frequency hourly \
--retention 72h
# نسخ احتياطي يومي (خارجي)
ghaymah backup schedule create \
--name daily-offsite \
--source prod-data \
--destination backups-offsite \
--frequency daily \
--time "02:00" \
--retention 30d
```
### ج. سكربت النسخ الاحتياطي
```bash
#!/bin/bash
# backup-script.sh - سكربت النسخ الاحتياطي التلقائي
set -e
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
SOURCE_VOLUME="prod-data"
LOCAL_BUCKET="backups-local"
OFFSITE_BUCKET="backups-offsite"
echo "[$TIMESTAMP] بدء النسخ الاحتياطي..."
# 1. إنشاء snapshot من Block Storage
echo "إنشاء snapshot..."
SNAPSHOT_ID=$(ghaymah storage snapshot create \
--volume $SOURCE_VOLUME \
--name "backup-$TIMESTAMP" \
--output json | jq -r '.id')
echo "تم إنشاء snapshot: $SNAPSHOT_ID"
# 2. نسخ إلى Object Storage المحلي
echo "نسخ إلى التخزين المحلي..."
ghaymah storage copy \
--source "snapshot:$SNAPSHOT_ID" \
--destination "s3://$LOCAL_BUCKET/backup-$TIMESTAMP.tar.gz" \
--compress \
--encrypt
# 3. نسخ إلى Object Storage الخارجي (يومياً فقط)
HOUR=$(date +%H)
if [ "$HOUR" == "02" ]; then
echo "نسخ إلى التخزين الخارجي..."
ghaymah storage copy \
--source "s3://$LOCAL_BUCKET/backup-$TIMESTAMP.tar.gz" \
--destination "s3://$OFFSITE_BUCKET/backup-$TIMESTAMP.tar.gz"
fi
# 4. تنظيف النسخ القديمة
echo "تنظيف النسخ القديمة..."
ghaymah backup cleanup \
--bucket $LOCAL_BUCKET \
--older-than 72h
ghaymah backup cleanup \
--bucket $OFFSITE_BUCKET \
--older-than 30d
# 5. التحقق من النسخة
echo "التحقق من سلامة النسخة..."
ghaymah backup verify \
--backup "s3://$LOCAL_BUCKET/backup-$TIMESTAMP.tar.gz"
echo "[$TIMESTAMP] اكتمل النسخ الاحتياطي بنجاح ✓"
```
---
## 5. إجراءات الاستعادة
### سيناريو: استعادة بعد Ransomware
```bash
#!/bin/bash
# restore-script.sh - سكربت الاستعادة
echo "🔄 بدء عملية الاستعادة..."
# 1. تحديد آخر نسخة سليمة
echo "البحث عن آخر نسخة سليمة..."
LATEST_BACKUP=$(ghaymah backup list \
--bucket backups-local \
--status verified \
--limit 1 \
--output json | jq -r '.[0].name')
echo "آخر نسخة سليمة: $LATEST_BACKUP"
# 2. إنشاء volume جديد للاستعادة
echo "إنشاء volume جديد..."
ghaymah storage volume create \
--name restored-data \
--size 100GB \
--type ssd
# 3. استعادة البيانات
echo "استعادة البيانات..."
ghaymah backup restore \
--source "s3://backups-local/$LATEST_BACKUP" \
--destination restored-data \
--verify
# 4. التحقق من البيانات
echo "التحقق من البيانات المستعادة..."
ghaymah storage verify --volume restored-data
# 5. تبديل الـ volumes
echo "تبديل إلى البيانات المستعادة..."
ghaymah storage swap \
--old prod-data \
--new restored-data
echo "✅ اكتملت الاستعادة بنجاح!"
```
---
## 6. جدول RPO/RTO حسب نوع البيانات
| نوع البيانات | RPO | RTO | تكرار النسخ | الاحتفاظ |
|--------------|-----|-----|-------------|----------|
| **قواعد البيانات** | 15 دقيقة | 1 ساعة | كل 15 دقيقة | 7 أيام |
| **ملفات التطبيق** | 1 ساعة | 2 ساعة | كل ساعة | 30 يوم |
| **سجلات النظام** | 4 ساعات | 8 ساعات | كل 4 ساعات | 90 يوم |
| **الأرشيف** | 24 ساعة | 24 ساعة | يومي | سنة |
---
## 7. اختبار الاستعادة الدوري
### جدول الاختبار
| الاختبار | التكرار | المسؤول |
|----------|---------|---------|
| استعادة ملف واحد | أسبوعي | DevOps |
| استعادة قاعدة بيانات | شهري | DBA |
| استعادة كاملة (DR) | ربع سنوي | فريق الأمن |
### سكربت اختبار الاستعادة
```bash
#!/bin/bash
# test-restore.sh - اختبار الاستعادة
echo "🧪 بدء اختبار الاستعادة..."
# إنشاء بيئة اختبار
ghaymah project create restore-test --temporary
# استعادة من آخر نسخة
ghaymah backup restore \
--source backups-local/latest \
--destination restore-test \
--verify
# اختبار البيانات
ghaymah test run \
--project restore-test \
--suite data-integrity
# تنظيف
ghaymah project delete restore-test --force
echo "✅ اختبار الاستعادة ناجح!"
```
---
## 8. ملخص الاستراتيجية
```
┌─────────────────────────────────────────────────────────────────────┐
│ ملخص استراتيجية 3-2-1 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 📦 3 نسخ: │
│ • Production (Block Storage - Riyadh) │
│ • Local Backup (Object Storage - Riyadh) │
│ • Offsite Backup (Object Storage - Jeddah) │
│ │
│ 💾 2 وسيط: │
│ • Block Storage (SSD) │
│ • Object Storage (S3) │
│ │
│ 🌍 1 خارج الموقع: │
│ • منطقة جدة (me-jeddah-1) │
│ │
│ ⏱️ الأهداف: │
│ • RPO: 1 ساعة (أقصى خسارة بيانات) │
│ • RTO: 4 ساعات (أقصى وقت توقف) │
│ │
└─────────────────────────────────────────────────────────────────────┘
```