محتويات الدليل
حدّد نطاق الاختبار والمكان المستقل
تستخدم الأوامر Bash وGNU tar وsha256sum وOpenSSH على Ubuntu أو WSL. أبقِ طرفية واحدة للخادم وأخرى للحاسوب؛ متغيرات كل طرفية تستخدمها الخطوات التالية. توقف عند أي خطأ قبل المتابعة.
لا تنشئ النسخة المستقلة على القرص نفسه أو داخل الجهاز الذي تحميه. حدد الملفات وموعد النسخ ومدة الاحتفاظ ومن يستطيع القراءة. أرشيف tar.gz مضغوط، لكنه غير مشفر أثناء التخزين.
أنشئ ملفين تجريبيين داخل حسابك
داخل الخادم أنشئ مساحة خاصة وأمثلة غير نشطة. لا تعدّل جذر الموقع العامل أو إعداد Nginx الفعلي:
umask 077
backup_lab=$(mktemp -d "$HOME/ubuntu-vps-backup.XXXXXX")
mkdir -p "$backup_lab/payload/site" "$backup_lab/payload/nginx" "$backup_lab/export"
printf '%s\n' '<!doctype html><html lang="en"><title>Restore drill</title><h1>Recovered static page</h1></html>' > "$backup_lab/payload/site/index.html"
printf '%s\n' 'server {' ' listen 8080;' ' server_name example.test;' ' root /var/www/first-site;' '}' > "$backup_lab/payload/nginx/first-site.conf"
printf 'Practice directory: %s\n' "$backup_lab"إذا أردت لاحقًا استبدال الأمثلة بملفات موقعك، استخدم نسخة ثابتة أو أوقف الكتابات بصورة مدروسة. لا تضم مفاتيح SSH الخاصة أو مفاتيح الشهادات بلا خطة آمنة. التمرين الحالي يستخدم الملفين التجريبيين فقط.
أنشئ الأرشيف والبصمات
في طرفية الخادم نفسها أنشئ بيان بصمات للملفات ثم الأرشيف وبصمته:
(
cd "$backup_lab/payload" &&
sha256sum site/index.html nginx/first-site.conf > SHA256SUMS
)
tar -czf "$backup_lab/export/static-site.tar.gz" -C "$backup_lab/payload" site nginx SHA256SUMS
(
cd "$backup_lab/export" &&
sha256sum static-site.tar.gz > static-site.tar.gz.sha256
)
tar -tzf "$backup_lab/export/static-site.tar.gz"
printf 'Server export directory: %s\n' "$backup_lab/export"بيان الملفات يتحقق من المحتوى المستعاد، وبصمة الأرشيف تتحقق من نقل الحزمة دون تغيير. هذه البصمات لا تثبت الأصالة ضد مهاجم يستطيع استبدال البيانات وملفات البصمات معًا. احمِ صلاحيات النسخ ومكانها.
انقل النسخة خارج الخادم
على حاسوبك في طرفية Bash مستقلة استبدل مستخدم SSH والعنوان والمسار بما طبعته خطوات الخادم. تحقق من هوية المضيف كالمعتاد، ثم انسخ الأرشيف والبصمة:
umask 077
recovery_dir=$(mktemp -d "$HOME/ubuntu-vps-restore.XXXXXX")
remote_backup=/home/deploy/ubuntu-vps-backup.REPLACE/export
scp -i ~/.ssh/ubuntu_vps "deploy@203.0.113.10:$remote_backup/static-site.tar.gz" "$recovery_dir/"
scp -i ~/.ssh/ubuntu_vps "deploy@203.0.113.10:$remote_backup/static-site.tar.gz.sha256" "$recovery_dir/"SCP يحمي النقل عبر SSH؛ لا يجعل النسخة المحفوظة مشفرة تلقائيًا. افحص مساحة التخزين وصلاحيات المجلد وسياسة تشفير القرص أو النسخة إن كانت تحتوي بيانات خاصة.
تحقق واستعد إلى مجلد فارغ
على الحاسوب وفي الطرفية نفسها افحص بصمة الأرشيف واعرض قائمة محتوياته:
(
cd "$recovery_dir" &&
sha256sum -c static-site.tar.gz.sha256
)
tar -tzf "$recovery_dir/static-site.tar.gz"استخدم أرشيفًا تثق بمصدره، وراجع المسارات قبل الاستخراج. عند فشل التحقق توقف. لا تستخرج أرشيفًا غير موثوق بصلاحيات root أو فوق ملفات قائمة.
استعد إلى مجلد جديد فارغ وقارن الملفات ببيانها:
restore_dir=$(mktemp -d "$recovery_dir/restored.XXXXXX")
tar -xzf "$recovery_dir/static-site.tar.gz" -C "$restore_dir" --keep-old-files --no-same-owner
(
cd "$restore_dir" &&
sha256sum -c SHA256SUMS
)
cat "$restore_dir/site/index.html"الخيار --keep-old-files يرفض الكتابة فوق ملفات موجودة، و--no-same-owner يمنع فرض ملكيات المصدر. يجب أن ينجح التحقق من الملفين. وجود الأرشيف وحده أو نجاح فك الضغط لا يثبت أن محتواهما مطابق.
افصل استعادة الملفات عن تشغيل الخدمة
إعداد Nginx المستعاد هنا ملف نصي غير نشط. تشغيله على جهاز بديل يحتاج مراجعة المسارات والاسم والحزم وصلاحيات الملفات والشهادة، ثم nginx -t واختبار HTTPS خارجي. لا تشغّل إعدادًا قديمًا دون فهم وجهته.
قاعدة البيانات تحتاج طريقة تعطي نقطة استعادة متسقة وتوافق إصدار وخطة للكتابات الجديدة. اللقطة ونسخ مجلد قاعدة بيانات أثناء عملها ليسا بديلين تلقائيين عن ذلك. خطط للبريد والمهام والملفات المرفوعة والأسرار كل على حدة.
سجّل نتيجة يمكن تكرارها
سجّل تاريخ النسخ وحجم الأرشيف ومكانه ونتيجة بصمة الأرشيف ونتيجة الملفين وزمن الاستعادة المقاس. لا تكتب نجاحًا عامًا إذا تحققت من ملف واحد فقط. احتفظ بنسخ مناسبة وفق مدة احتفاظ محددة واختبر نسخة أقدم كذلك.
مثال أهداف تخطيط: فقد بيانات لا يتجاوز 24 ساعة وعودة خدمة خلال 60 دقيقة. هذه أهداف افتراضية وليست نتيجة هذا التمرين؛ حدد ما يناسب مشروعك وقس الزمن والبيانات فعليًا.
راجع توافق جهاز الاستعادة واختبار الموقع والشهادة قبل اعتبار الخطة مكتملة. لا تحذف المصدر إلا بعد تأكيد النسخة المطلوبة والاستعادة.
هذا تمرين محدود لاستعادة ملفين دون تغيير الخدمة العاملة. اختبر نسخة مشروعك وخدماته بصورة مستقلة قبل اعتماد خطة الاستعادة.
أسئلة شائعة
هل اللقطة تكفي كنسخة احتياطية؟
افحص مكانها ومدة الاحتفاظ واعتمادها على الحساب أو البنية نفسها. البيانات المهمة تحتاج نسخة مستقلة واختبار استعادة وفق مخاطر مشروعك.
هل SHA-256 يثبت أن النسخة موثوقة؟
يثبت تطابق البايتات مع البصمة المقارنة. لا يثبت مصدر النسخة إذا استطاع طرف استبدال الأرشيف والبصمة معًا.
هل تنطبق الخطوات على قاعدة بيانات تعمل؟
التمرين لملفات ثابتة. قاعدة البيانات تحتاج آلية نسخ متسقة وتعليمات استعادة تخص محركها وإصداره.