OffshoreVps
الأمان8 أكتوبر 20268 دقيقة للقراءةبقلم فريق OffshoreVps

كيف تنسخ VPS احتياطياً باستخدام restic: آلياً ومشفّراً

قاعدة 3-2-1، وما يجب نسخه، وإعداد restic مشفّر، وسكربت cron، ولماذا يجب أن تختبر الاستعادة. لقطات المزوّد وحدها لا تكفي.

قد يتعطل VPS، أو يُحذف بالخطأ، أو يتعطل بسبب تحديث سيئ. الحماية الوحيدة هي نسخة احتياطية جرّبتَها. يعدّ هذا الدليل نسخًا احتياطية بسيطة وآلية ومشفرة بأدوات مجانية.

نافذة طرفية على VPS تعرض الأوامر المستخدمة لنسخ VPS احتياطياً، تبدأ بـ “sudo apt install -y restic”
نوع الأوامر التي ستشغّلها على خادمك في هذا الدليل.

قاعدة 3-2-1

احتفظ بـ 3 نسخ من بياناتك، على 2 نوعين مختلفين من التخزين، مع نسخة 1 في مكان آخر تمامًا. وفي حالة VPS يعني ذلك عادةً البيانات الحية، ولقطة محلية، ونسخة خارج الموقع لدى مزوّد مختلف أو في بلد مختلف.

ما الذي تنسخه احتياطيًا

  • ملفات الموقع والمرفوعات (/var/www).
  • قواعد البيانات، تُفرَّغ إلى ملف أولًا (لا تنسخ أبدًا ملفات قاعدة البيانات الحية).
  • الإعدادات: /etc/nginx، وتغييرات /etc، وملفات Docker Compose والأحجام (volumes).
  • مهام Cron وأي سكربتات مخصصة.

يمكنك إعادة تثبيت نظام التشغيل في دقائق. أما ما لا يمكنك إعادة تثبيته فهو بياناتك وإعداداتك.

استخدم restic لنسخ احتياطية مشفرة ومنزوعة التكرار

sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

أنشئ ملف كلمة المرور بسلسلة عشوائية طويلة واحتفظ بنسخة منه في مكان آمن. إذا فقدت كلمة المرور هذه، فلا يمكن فتح النسخ الاحتياطية. يدعم restic أيضًا التخزين المتوافق مع S3، لذا يمكنك الرفع إلى أي مخزن كائنات.

خطوات هذا الدليل بالترتيب: 1. قاعدة 3-2-1؛ 2. ما يجب نسخه؛ 3. استخدم restic لنسخ مشفّرة ومنزوعة التكرار؛ 4. سكربت النسخ الاحتياطي؛ 5. اختبر الاستعادة؛ 6. اللقطات تفيد لكنها لا تكفي
خطوات هذا الدليل بالترتيب.

سكربت نسخ احتياطي

#!/bin/bash
set -e
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
restic backup /var/www /etc /var/backups/db.sql.gz
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

احفظه باسم /usr/local/bin/backup.sh، واجعله قابلًا للتنفيذ، وجدولْه:

sudo chmod +x /usr/local/bin/backup.sh
echo "30 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1" | sudo tee /etc/cron.d/backup

اختبر الاستعادة

restic snapshots
restic restore latest --target /tmp/restore-test --include /etc/nginx

النسخة الاحتياطية التي لم تستعدها قط ليست سوى أمل. اختبرها مرة كل ربع سنة، ودائمًا بعد تغيير أي شيء.

اللقطات تفيد لكنها لا تكفي

لقطات المزوّد سريعة ومفيدة قبل التغييرات المحفوفة بالمخاطر، لكنها تعيش لدى المزوّد نفسه وفي الحساب نفسه. اعتبرها وسيلة راحة، واحتفظ بنسخة مستقلة خارج الموقع.