إنشاء روبوت لإرسال نسخ احتياطية لنظام استضافة DirectAdmin إلى خدمة Amazon S3
سنشرح في هذه المقالة كيفية إنشاء روبوت نسخ احتياطي لـ DirectAdmin وإرساله إلى Amazon S3. تابعونا.

إنشاء روبوت لإرسال نسخ احتياطية لنظام استضافة DirectAdmin إلى خدمة Amazon S3

توضح هذه المقالة كيفية استخدام برنامج آلي (بوت) لنقل نسخ احتياطية من استضافة DirectAdmin إلى Amazon S3 وحذف الملفات القديمة. تتضمن الخطوات إنشاء S3، وتكوين IAM، وكتابة برنامج نصي للأتمتة.
0 الأسهم
0
0
0
0

المتطلبات الأساسية

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

  • الوصول عبر SSH الوصول إلى خادم DirectAdmin sudo/root.
  • تثبيت واجهة سطر أوامر AWS (يفضل الإصدار v2) أو أدوات مثل rclone.
  • واحد دلو S3 في AWS بالاسم المطلوب والمنطقة المناسبة.
  • مستخدم أنا أكون مع محدودية الوصول إلى تلك الدلو أو باستخدام دور إدارة الهوية والوصول (في حالة التشغيل على EC2).
  • مساحة كافية على الخادم لتخزين النسخ الاحتياطية مؤقتًا.
  • التفعيل سياسة دورة الحياة في S3 للحذف بعد 7 أيام.

نظرة عامة على سير العمل

فيما يلي مخطط سير العملية المبسط:

  1. يقوم DirectAdmin بإنشاء نسخة احتياطية وحفظها في مجلد محلي (على سبيل المثال). /home/admin/backups).
  2. يتم تشغيل البرنامج النصي (البوت) وفقًا لجدول زمني ويقوم بتحميل النسخ الاحتياطية إلى S3.
  3. بعد التأكد من التحميل، سيقوم البرنامج النصي بتحميل الملفات المحلية التي يزيد حجمها عن يومين يزيل شرط السن.
  4. في الموسم الثالث واحد دورة الحياة تم ضبطه للاحتفاظ بكل كائن بعد 7 أيام حذف.

التنفيذ خطوة بخطوة

1) قم بإنشاء حاوية S3 وحدد دورة حياتها (حذفها بعد 7 أيام)

يمكنك إنشاء حاوية تخزين من وحدة تحكم AWS أو باستخدام واجهة سطر أوامر AWS. مثال على أمر إنشاء حاوية تخزين (مثال: region = eu-central-1):

aws s3api create-bucket --bucket my-da-backups-bucket --region eu-central-1 --create-bucket-configuration LocationConstraint=eu-central-1

مثال على سياسة دورة الحياة (ملف) ملف دورة الحياة (lifecycle.json)):

{"Rules":[{"ID":"ExpireBackupsAfter7Days","Prefix":"","Status":"Enabled","Expiration":{"Days":7},"NoncurrentVersionExpiration":{"NoncurrentDays":7}}]}

تطبيق سياسة باستخدام واجهة سطر الأوامر:

aws s3api put-bucket-lifecycle-configuration --bucket my-da-backups-bucket --lifecycle-configuration file://lifecycle.json

التوصيات: إذا كنت بحاجة إلى تقليل تكاليف التخزين، يمكنك استخدام فئات التخزين مثل STANDARD_IA أو التدرج الذكي في حالة تمكين التحكم في الإصدارات، قم أيضًا بتعيين سياسة NoncurrentVersionExpiration.

2) أنشئ سياسة إدارة الهوية والوصول (IAM) ومستخدمًا بأقل قدر ممكن من الوصول

مثال على سياسة تقتصر على مجموعة بيانات (ملف JSON):

{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:PutObject","s3:GetObject","s3:ListBucket","s3:DeleteObject","s3:PutObjectAcl"],"Resource":["arn:aws:s3:::my-da-backups-bucket","arn:aws:s3:::my-da-backups-bucket/*"]}]}

نصيحة أمنية: من الأفضل استخدام مفاتيح عشوائية بدلاً من المفاتيح الثابتة. دور إدارة الهوية والوصول (إذا كان خادمك من نوع EC2). ضع في اعتبارك أيضًا تقييد الوصول بناءً على عنوان IP أو شروط إضافية.

3) قم بتثبيت وتكوين واجهة سطر أوامر AWS على الخادم

مثال على التثبيت لأنظمة Debian/Ubuntu و CentOS/RHEL:

sudo apt update && sudo apt install -y awscli
sudo yum install -y awscli

إعدادات مفتاح الوصول إذا لزم الأمر:

aws configure --profile da-backup

إذا كنت تستخدم دور IAM على EC2، فلا حاجة لتكوينه.

4) نموذج البرنامج النصي: upload_and_clean.sh

سيقوم هذا البرنامج النصي بتحميل جميع النسخ الاحتياطية إلى S3 ثم حذف الملفات المحلية التي يزيد عمرها عن يومين والتي لا تزال موجودة في S3. (ضع الكود التالي في المسار المناسب واجعله قابلاً للتنفيذ.)

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'

# Configuration
BACKUP_DIR="/home/admin/backups"
BUCKET="my-da-backups-bucket"
S3_PREFIX="directadmin"
AWS_PROFILE="da-backup"
LOGFILE="/var/log/da_s3_backup.log"
DAYS_LOCAL=2

# Helpers
log() { echo "$(date '+%F %T') $*" | tee -a "$LOGFILE"; }

aws_cmd() {
  if [ -z "${AWS_PROFILE:-}" ]; then
    aws "$@"
  else
    aws --profile "$AWS_PROFILE" "$@"
  fi
}

# Upload files
log "Starting upload from $BACKUP_DIR to s3://$BUCKET/$S3_PREFIX"
aws_cmd s3 cp "$BACKUP_DIR" "s3://$BUCKET/$S3_PREFIX/" --recursive --only-show-errors --storage-class STANDARD --sse AES256
if [ $? -ne 0 ]; then
  log "Error: upload to S3 failed."
  exit 1
fi
log "Upload completed."

# Remove local files older than DAYS_LOCAL if present in S3
log "Searching for local files older than $DAYS_LOCAL days"
find "$BACKUP_DIR" -type f -mtime +"$DAYS_LOCAL" -print0 | while IFS= read -r -d '' file; do
  base=$(basename "$file")
  s3key="$S3_PREFIX/$base"
  if aws_cmd s3api head-object --bucket "$BUCKET" --key "$s3key" >/dev/null 2>&1; then
    log "Removing local file: $file (found in S3)"
    rm -f "$file" && log "Deleted: $file" || log "Error deleting: $file"
  else
    log "S3 object not found: s3://$BUCKET/$s3key — not removed locally."
  fi
done

log "Operation finished."

نصائح: احفظ ملف البرنامج النصي، على سبيل المثال، في /usr/local/bin/upload_and_clean.sh ضع ومع chmod +x نفّذ. المسار دليل النسخ الاحتياطي قم بالتعديل وفقًا لإعدادات DirectAdmin الخاصة بك.

5) جدولة التنفيذ التلقائي (Cron أو مؤقت systemd)

لتشغيلها يومياً في الساعة 02:00 باستخدام cron:

0 2 * * * /usr/local/bin/upload_and_clean.sh >> /var/log/da_s3_backup.log 2>&1

إذا رغبت في ذلك، يمكنك ذلك. مؤقت النظام تم تصميمه لتحسين التحكم والتسجيل.

6) التحقق من نجاح العملية وضمانه

تحقق من السجلات في /var/log/da_s3_backup.log وتحقق من الملفات الموجودة في S3:

لعرض قائمة الملفات في S3:

aws s3 ls s3://my-da-backups-bucket/directadmin

تحقق من فترة دورة الحياة من وحدة التحكم أو باستخدام أمر CLI للتأكد من أن الحذف سيحدث بعد 7 أيام.

خيارات وتحسينات متقدمة

  • تحميل متعدد الأجزاء بالنسبة للملفات الكبيرة: يدعم AWS CLI ذلك تلقائيًا، ولكن بالنسبة للملفات الكبيرة جدًا، يمكنك تغيير إعدادات التزامن.
  • استخدام SSE-KMS للتشفير باستخدام مفتاح KMS الخاص بالمؤسسة: aws s3 cp من --sse aws:kms --sse-kms-key-id "arn:aws:kms:..."" يستخدم.
  • فعل قفل كائن S3 ويمكنك استخدام خاصية التحكم في الإصدارات إذا كنت بحاجة إلى الحماية من الحذف غير المرغوب فيه.
  • إذا كانت حركة المرور الصادرة مكلفة، فضع الخادم بالقرب من منطقة S3 أو في بنية تحتية متصلة مباشرة.
  • أضف إشعارًا في حالة فشل التحميل باستخدام AWS SNS أو Webhook لإرسال رسالة إلى Slack/البريد الإلكتروني.

نصائح أمنية هامة

بعض النصائح الأساسية للحفاظ على النسخ الاحتياطية آمنة:

  • أقل الامتيازات: استخدم الحد الأدنى من الصلاحيات لإدارة الهوية والوصول (IAM).
  • تجنب المفاتيح الثابتة: لا تقم بتخزين مفاتيح الوصول في ملف نصي؛ إذا كنت تستخدم EC2، فاستخدم دور IAM.
  • التشفير: استخدم التشفير من جانب الخادم (SSE) أو التشفير قبل التحميل (تشفير gpg أو rclone).
  • تسجيل الدخول: قم بتمكين سجلات الوصول إلى S3 و CloudTrail لتسجيل كل عملية.

المراقبة والتنبيه واختبار التعافي من الكوارث

توصيات لضمان استمرارية التشغيل:

  • قم باختبار عملية استعادة النسخ الاحتياطية من S3 إلى الخادم بانتظام وقم بتضمين هذا الاختبار في جدولك الشهري.
  • استخدام مخزون S3 و كلاود واتش لمراقبة معدل التحميل والأخطاء.
  • قم بتعيين تنبيه في حالة حدوث خطأ أو فشل في التحميل.

مقارنة الخيارات: awscli مقابل rclone مقابل s3fs

واجهة سطر أوامر AWSبسيط وشائع ومريح. يدعم دورة حياة AWS والتشفير.

rcloneميزات إضافية للمزامنة، والتشفير من جانب العميل، والتحكم في عرض النطاق الترددي. مناسب إذا كنت بحاجة إلى تحديد عرض النطاق الترددي أو التشفير قبل التحميل.

s3fs: يقوم بتثبيت الحاوية كنظام ملفات، ولكن قد يكون أداؤه واستقراره أقل بالنسبة لملفات النسخ الاحتياطي الكبيرة.

لماذا يُعد اختيار الموقع المناسب أمراً مهماً؟

يُمكن أن يُساهم اختيار الموقع المناسب في تقليل وقت التحميل وتكاليف حركة البيانات الصادرة. كما أن اختيار موقع قريب من منطقة S3 سيُقلل من زمن الاستجابة ووقت التشغيل.

إذا كنت بحاجة إلى حماية إضافية، أو اتصال مخصص، أو اختلافات في الأداء، فإن البنية التحتية ذات المواقع المتعددة والميزات الخاصة يمكن أن تساعد.

مثال عملي: إعداد نظام تداول VPS

  • اختر موقعًا قريبًا من البورصة أو خادم التداول لتقليل زمن الاستجابة.
  • قم بتفعيل الحماية من هجمات DDoS للخادم المعني.
  • انقل نسخ DirectAdmin الاحتياطية إلى خدمة S3 قريبة لتقليل وقت النسخ الاحتياطي.

ملخص ونقاط ختامية

يتضمن بناء برنامج آلي ثلاثة أجزاء رئيسية: التحميل الآمن إلى S3، والحذف المحلي للملفات القديمة، يومين بعد تأكيد التحميل، وتكوين دورة الحياة في S3 للاحتفاظ بها 7 أيام.

استخدم نظام إدارة الهوية والوصول (IAM) مع الحد الأدنى من الوصول، والتشفير، والمراقبة المناسبة. اختبر عملية الاستعادة دائمًا لضمان التعافي.

ملفات وموارد نموذجية

الأسئلة الشائعة

قد يعجبك أيضاً