SSD Nodes Learn 🎉 VPS من $5.50/شهر
الأدلة Matt Connorبقلم Matt Connor

استخدم VPS كوجهة للنسخ الاحتياطي خارج الموقع

لقطة VPS ليست نسخة خارج الموقع. تعلّم وضع نسخك على VPS تملكه باستخدام Proxmox Backup Server أو restic، واحسب تكلفة الاحتفاظ قبل التنفيذ.

ما هو هدف النسخ الاحتياطي خارج الموقع فعلياً

هدف النسخ الاحتياطي خارج الموقع هو جهاز ثانٍ يحتفظ بنسخة من بياناتك، ويتعرض للأعطال بشكل مستقل عن الجهاز الأصلي. ويُعد VPS لدى مزود آخر الخيار الأقل تكلفة الذي يستطيع معظم القراء استخدامه. توجد 3 خيارات عملية: تشغيل Proxmox Backup Server على VPS، أو استخدام مستودع restic عبر SSH أو S3، أو إنشاء نسخة مطابقة باستخدام rsync يسحبها خادم النسخ الاحتياطي. يعتمد الخيار المناسب على ما تريد استعادته والسرعة التي تحتاج إليها لاستعادته. وتحدد الجهة المسموح لها بحذف النسخة بقية التصميم.

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

لقطة snapshot لدى مزودك ليست تلك النسخة الثانية. فهي موجودة خلف كلمة مرور لوحة التحكم نفسها، لذلك يستطيع من يحصل على كلمة المرور حذف الخادم ولقطاته في جلسة واحدة. كما تفرض خدمات اللقطات رسوماً شهرية لكل gigabyte، وبأسعار أعلى بكثير من القرص العادي، ما يجعل الاحتفاظ بها لمدة 90 يوماً مكلفاً. تستحق الفرق بين لقطات VPS والنسخ الاحتياطية القراءة قبل الاعتماد على أيٍّ منهما.

أيّ من الأشكال الثلاثة يناسبك

  • Proxmox Backup Server (PBS): المصدر هو Proxmox VE (البيئة الافتراضية)، وما تستعيده هو آلة افتراضية كاملة. ينفّذ النسخ الاحتياطي على مستوى صور الأقراص، وتعيد مهام التحقق قراءة البيانات الموجودة على الهدف.
  • مستودع restic: المصدر مضيف Linux واحد أو عدة مضيفين، وما تستعيده هو دليل أو تفريغ قاعدة بيانات. يُشفّر البيانات على العميل، ويدعم SSH وS3، بالإضافة إلى بروتوكول REST الخاص به.
  • rsync عبر SSH، حيث يسحب مضيف النسخ الاحتياطي البيانات: تريد الملفات على الهدف كملفات عادية، يمكن قراءتها باستخدام ls وcat، من دون الحاجة إلى برنامج على العميل لاستعادتها.

إذا لم تتمكن من اتخاذ القرار، فاستخدم restic. يُشفّر البيانات قبل مغادرتها الجهاز، ولا يحتاج على الهدف إلى أكثر من حساب SSH ومساحة على القرص. يشرح إعداد نسخ restic الاحتياطية على VPS جانب العميل بمزيد من التفصيل، بينما يشرح مقارنة restic وBorgBackup جنباً إلى جنب كيفية الاختيار إذا كنت تستخدم Borg بالفعل.

تقدير الحجم المستهدف: تكلفة شهر واحد من الاحتفاظ

إزالة التكرار هي سبب انخفاض الأرقام عما يتوقعه كثيرون. يقسّم كل من restic وPBS الملفات إلى أجزاء متغيرة الحجم، ثم يحسب قيمة التجزئة لكل جزء. يُخزَّن كل جزء فريد مرة واحدة فقط. لذلك لا تضيف النسخة الاحتياطية الثانية من مجموعة بيانات بحجم 500 GB مقداراً إضافياً قدره 500 GB. بل تضيف الأجزاء التي تغيّرت.

لذلك يرتبط حجم المستودع بعمر أقدم لقطة محفوظة، لا بعدد اللقطات. لنفترض أن لديك 500 GB من البيانات و5 GB من البيانات الفريدة الجديدة يومياً. سيحتوي المستودع عندئذٍ على 500 GB الأساسية، إضافةً إلى نحو 5 GB عن كل يوم وصولاً إلى أقدم لقطة تحتفظ بها السياسة.

ChartRepository size for 500 GB of data at 5 GB of new unique data per day
The data behind this chart
[
  {
    "label": "7 daily",
    "repo_size_gb": 535,
    "usd_at_10_per_tb": 5.35
  },
  {
    "label": "7 daily, 4 weekly",
    "repo_size_gb": 640,
    "usd_at_10_per_tb": 6.4
  },
  {
    "label": "7 daily, 4 weekly, 6 monthly",
    "repo_size_gb": "1,400",
    "usd_at_10_per_tb": 14.0
  },
  {
    "label": "7 daily, 4 weekly, 12 monthly",
    "repo_size_gb": "2,325",
    "usd_at_10_per_tb": 23.25
  }
]

يحسب عمود الدولار تكلفة ذلك المستودع بسعر 10 دولارات أمريكية لكل TB شهرياً. هذا السعر افتراضي لغرض الحساب، وليس عرضاً من أي مزود. استبدله بالسعر الفعلي لكل TB في الخطة التي تدرسها. يحتوي أسبوع من النسخ اليومية على نحو 535 GB. ويحتوي سجل كامل لعام واحد على 2,325 GB، أي ما يعادل $23.25 شهرياً، مقابل $5.35 للأسبوع. الاحتفاظ بالسجل منخفض التكلفة. أما ما تدفع ثمنه فعلياً فهو النسخة الأساسية.

لا تفيد إزالة التكرار للبيانات التي تصل مضغوطة أو مشفّرة مسبقاً. يتغير تفريغ قاعدة بيانات مضغوط باستخدام gzip بالكامل عند كل تشغيل، لذلك يُخزَّن كل تفريغ كأجزاء جديدة وينمو المستودع بمقدار تفريغ كامل كل ليلة. اكتب التفريغ من دون ضغط، ودع أداة النسخ الاحتياطي تضغطه، لأن restic يدعم المستودعات المضغوطة منذ 0.14، وأضاف الإصدار 0.19 نمطي zstd وهما fastest وbetter. كما أن مكتبات الصور والفيديو تحقق إزالة تكرار ضعيفة للسبب نفسه، لذلك قدّر حجمها وفق معدل نموها الفعلي، لا وفق الصفوف أعلاه.

أنت تشتري هنا مساحة قرص غير مستخدمة بدلاً من قدرة المعالجة، وهذا تحديداً هو الوضع الذي يتفوق فيه storage VPS على VPS عادي.

لماذا يحدد عرض النطاق الترددي ووقت الاستعادة الخطة

القرص هو الجزء منخفض التكلفة. أما الرفع الأولي والاستعادة الفعلية لاحقاً فهما الجزءان المكلفان. تساوي سعة 500 GB مقدار 4 تريليونات من البتات، ولذلك يعطي قسمة هذه السعة على سرعة الاتصال الحد الأدنى للمدة التي قد تستغرقها الاستعادة الكاملة.

ChartElapsed hours to pull 500 GB back, at line rate
The data behind this chart
[
  {
    "label": "40 Mbit/s home upload",
    "elapsed_h": 27.8
  },
  {
    "label": "100 Mbit/s",
    "elapsed_h": 11.1
  },
  {
    "label": "500 Mbit/s",
    "elapsed_h": 2.2
  },
  {
    "label": "1 Gbit/s VPS port",
    "elapsed_h": 1.1
  }
]

هذه أرقام وفق سرعة الخط من دون أي حمل إضافي للبروتوكولات، لذا اعتبرها أفضل حالة ممكنة. عند سرعة 100 Mbit/s، تحتاج الاستعادة الكاملة إلى 11.1 ساعة قبل أن يتمكن أي شخص من الوصول إلى البيانات. ومن اتصال رفع منزلي بسرعة 40 Mbit/s، تحتاج إلى 27.8 ساعة. وعلى منفذ بسرعة 1 Gbit/s، تستغرق الاستعادة نفسها 1.1 ساعة. تكون العمليات التي تتعامل مع ملفات صغيرة كثيرة أبطأ من الحساب النظري، لأن الحمل لكل ملف يصبح العامل الغالب عندما يقل حجم الملفات عن بضع مئات من الكيلوبايت.

ينتج عن ذلك أمران. إذا كان هدف زمن الاستعادة (RTO)، أي مدة الانقطاع التي يمكنك تحملها، هو أربع ساعات، فإن استعادة 500 GB عبر اتصال بسرعة 100 Mbit/s تكون قد تجاوزت هذا الهدف، ولن يساعدك القرص الأرخص. كما أن معظم خطط VPS تحسب النقل الصادر، ولذلك تستهلك استعادة كاملة واحدة 0.5 TB من الحصة الشهرية لخادم النسخ الاحتياطي. تحقّق من هذه الحصة، وتحقّق مما يفعله مزود الخدمة عند تجاوزها، قبل أن تحتاج إلى البيانات.

تتضمن النسخة الاحتياطية الأولى مجموعة البيانات كاملة، وهي أبطأ عملية نسخ ستنفذها على الإطلاق. ابدأها يوم الجمعة، وحدد لها حدّاً للسرعة كي لا تستنفد وصلة الرفع في المصدر: يأخذ restic القيمة --limit-upload بوحدة KiB في الثانية، بينما يأخذ rsync القيمة --bwlimit.

الشكل 1: Proxmox Backup Server كمخزن بيانات بعيد

يناسب PBS الحالات التي يكون فيها المصدر هو Proxmox VE وتكون الآلة الافتراضية هي وحدة الاستعادة. لا يستطيع VPS الإقلاع من Proxmox ISO، لذلك ثبّت PBS فوق Debian. الإصدار 4.2 هو الإصدار الحالي اعتباراً من August 2026، وهو مبني على Debian 13 (trixie).

wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg \
  -O /usr/share/keyrings/proxmox-archive-keyring.gpg
sha256sum /usr/share/keyrings/proxmox-archive-keyring.gpg

قارن قيمة checksum هذه بالقيمة المنشورة في صفحة مستودعات حزم Proxmox. لا يكون مستودع apt موثوقاً إلا بقدر موثوقية المفتاح الذي تحققت منه. ثم اكتب /etc/apt/sources.list.d/proxmox.sources:

Types: deb
URIs: http://download.proxmox.com/debian/pbs
Suites: trixie
Components: pbs-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
sudo apt update && sudo apt install -y proxmox-backup-server
sudo proxmox-backup-manager datastore create offsite /mnt/datastore/offsite

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

بعد ذلك، أنشئ الحساب الذي سيستخدمه المصدر، وامنحه token بدلاً من كلمة مرور.

sudo proxmox-backup-manager user create backup@pbs
sudo proxmox-backup-manager user generate-token backup@pbs pve1
sudo proxmox-backup-manager acl update /datastore/offsite DatastoreBackup \
  --auth-id 'backup@pbs!pve1'

تظهر قيمة سرّ token مرة واحدة ولا يمكن قراءتها مجدداً، لذلك احفظها عند ظهورها. وتكمن أهمية الدور في أهمية token نفسها. يستطيع DatastoreBackup إنشاء نسخه الاحتياطية واستعادتها، ولا يملك امتياز Datastore.Prune، لذلك لا يستطيع ذلك token حذف snapshot سبق أن أنشأه.

تتكون سياسة الاحتفاظ في PBS من جزأين، والجزء الثاني هو الذي يتجاهله الناس عادةً. تزيل عملية Prune الـsnapshots. وتزيل عملية Garbage Collection الـchunks التي لا يشير إليها أي snapshot متبقٍ. تظهر المساحة الحرة بعد تشغيل Garbage Collection، وليس بعد Prune.

proxmox-backup-client prune host/web1 \
  --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --dry-run
sudo proxmox-backup-manager garbage-collection start offsite
sudo proxmox-backup-manager verify offsite

احذف --dry-run عندما تبدو قائمة الـsnapshots التي تخطط العملية لإزالتها صحيحة. تعمل Garbage Collection على مرحلتين: تحدّث وقت الوصول لكل chunk ما زال مشاراً إليه، ثم تحذف الـchunks التي يكون وقت وصولها أقدم من الحد الفاصل، أي قبل 24 hours و5 minutes من وقت بدء التشغيل. توجد فترة السماح هذه لمنع حذف chunk تكتبه عملية نسخ احتياطي جارية. جدولة Prune يومياً وGarbage Collection أسبوعياً على مخزن البيانات، وأضف مهمة verify لكي يعيد الهدف قراءة الـchunks الخاصة به ويبلغ عن التلف على القرص قبل أن تحدث عملية استعادة.

إذا كان المصدر نفسه مثيل PBS، فيمكن للصندوق البعيد سحب البيانات بدلاً من دفعها إليه.

sudo proxmox-backup-manager remote create home1 \
  --host pbs.home.example --userid sync@pam --password 'SECRET' \
  --fingerprint '64:d3:ff:3a:50:38:53:5a:9b:f7:50:ab:fe'
sudo proxmox-backup-manager sync-job create home1-offsite \
  --remote home1 --remote-store main --store offsite --schedule 'Wed 02:30'

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

الشكل 2: مستودع restic عبر SSH أو S3

توفّر كل من Debian وUbuntu حزمة restic، لكن إصداراتهما متأخرة عن upstream. الإصدار 0.19.1 هو الإصدار الحالي في August 2026. ثبّت الملف التنفيذي الرسمي على المضيف المصدر.

curl -LO https://github.com/restic/restic/releases/download/v0.19.1/restic_0.19.1_linux_amd64.bz2
bunzip2 restic_0.19.1_linux_amd64.bz2
sudo install -m 755 restic_0.19.1_linux_amd64 /usr/local/bin/restic
restic version

يطبع restic version الإصدار ومصرّف Go الذي بُني به. تُجرى الترقيات اللاحقة باستخدام sudo restic self-update، وهو يعمل مع الملفات التنفيذية الرسمية، وليس مع نسخة مثبّتة من apt.

على VPS الخاص بالنسخ الاحتياطي، أنشئ حساباً لا يملك أي ملفات أو موارد أخرى، ثم انسخ المفتاح العام للمضيف المصدر إلى /home/resticsrv/.ssh/authorized_keys.

sudo adduser --disabled-password --gecos '' resticsrv
sudo install -d -m 700 -o resticsrv -g resticsrv /srv/restic

هيّئ المستودع من المصدر عبر SFTP.

sudo sh -c 'umask 077; head -c 32 /dev/urandom | base64 > /root/.restic-password'
export RESTIC_REPOSITORY='sftp:resticsrv@backup.example.net:/srv/restic/web1'
export RESTIC_PASSWORD_FILE=/root/.restic-password
restic init
restic backup /etc /srv /var/backups --exclude-caches

خزّن كلمة المرور في مكان لا يكون هذا الخادم ولا هدف النسخ الاحتياطي. إذا فقدتها، فلن يكون المستودع قابلاً للقراءة، ولن يتوفر أي مسار للاسترداد. هذا هو ما تفرضه عليك التشفيرات من جهة العميل.

تُنفَّذ سياسة الاحتفاظ بأمر واحد، والجزء الثاني منه هو الذي يحرر مساحة القرص.

restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check --read-data-subset=10%

يحذف forget اللقطات. ويحذف prune ملفات الحزم التي كانت تلك اللقطات وحدها تشير إليها، ويشغّل --prune هذه العملية تلقائياً عند حذف أي شيء فعلياً. من دونه لا يتقلص حجم المستودع أبداً. يتحقق restic check من بنية المستودع، بينما يعيد --read-data-subset=10% قراءة عُشر ملفات الحزم ويحسب تجزئاتها، ما يكشف التلف في الهدف دون تكلفة قراءة كل الملفات. أما الصيغة الأخرى، --read-data-subset=1/10، فتفحص عُشراً ثابتاً واحداً؛ لذلك تغطي زيادة الرقم الأول كل أسبوع المستودع بأكمله خلال عشرة أسابيع.

إذا أُوقِفت عملية تشغيل بالقوة، تتوقف العملية التالية مع repository is already locked exclusively by PID. تأكد من عدم تشغيل أي نسخة احتياطية، ثم امسحها باستخدام restic unlock.

في تخزين الكائنات، تصبح سلسلة المستودع s3:https://s3.example.net/web1، وتكون بيانات الاعتماد في AWS_ACCESS_KEY_ID وAWS_SECRET_ACCESS_KEY. كل شيء آخر مطابق، وهذه هي طريقة تواصل restic مع مخزن كائنات MinIO مستضاف ذاتياً ويعمل على VPS نفسه.

النمط 3: ‏rsync عبر SSH باستخدام مفتاح مقيّد بالسحب فقط

تتمثل الخاصية الأمنية لهذا النمط في اتجاه الاتصال. يتصل خادم VPS الاحتياطي بالمصدر ويقرأ منه. لا يحتفظ المصدر بأي مفتاح ولا يملك مساراً إلى مضيف النسخ الاحتياطي، لذلك لا يمكن لاختراق المصدر الوصول إلى النسخ الاحتياطية إطلاقاً.

أنشئ زوج مفاتيح على خادم VPS الاحتياطي، ثم ثبّت الجزء العام منه على المصدر باستخدام أمر مفروض.

command="rrsync -ro /srv",restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA offsite-pull

تأتي rrsync ضمن حزمة rsync في /usr/bin/rrsync على Debian 13 وUbuntu 24.04. تسمح -ro بالقراءة فقط وتتضمن -no-del، لذلك لا يمكن لهذا المفتاح الكتابة إلى المصدر أو حذف أي شيء منه. وتوقف restrict ميزات SSH غير المطلوبة هنا، بما في ذلك إعادة توجيه المنافذ وpty، لذلك لا يمكن استخدام المفتاح لتسجيل دخول تفاعلي. بعد ذلك تصبح المسارات نسبية إلى الدليل الذي حددته، لذا يعني المسار البعيد / المسار /srv على المصدر.

تحافظ عملية السحب على السجل باستخدام hardlinks. تكون الملفات غير المتغيرة في الشجرة الجديدة hardlinks إلى الشجرة السابقة، لذلك تستهلك إدخالاً في الدليل بدلاً من نسخة ثانية.

DEST=/srv/mirror/web1
TODAY=$(date +%F)
LAST=$(ls -1d "$DEST"/2* 2>/dev/null | tail -1)
LINK=""
if [ -n "$LAST" ]; then LINK="--link-dest=$LAST"; fi
rsync -aH --numeric-ids $LINK -e 'ssh -i /root/.ssh/pull_ed25519' \
  pull@web1.example.net:/ "$DEST/.$TODAY.partial/"
mv "$DEST/.$TODAY.partial" "$DEST/$TODAY"

إعادة التسمية في النهاية هي ما يجعل الدليل المؤرَّخ موثوقاً: لا يظهر الاسم إلا بعد خروج rsync بالحالة 0، لذلك لا تبدو عملية نقل متوقفة كلقطة مكتملة. احذف الأشجار القديمة بسطر واحد، مع الإبقاء على ثلاثين شجرة.

ls -1d /srv/mirror/web1/2* | sort | head -n -30 | xargs -r rm -rf

كن واضحاً بشأن تكلفة هذا النمط. تعمل hardlinks على إزالة التكرار بين الملفات الكاملة فقط، لذلك يؤدي تغيير بايت واحد داخل صورة قرص بحجم 4 GB إلى نسخ 4 GB كاملة، بينما يخزّن restic وPBS بضع كتل متغيرة. كما يحتفظ الهدف بملفاتك بنص واضح، لذلك يستطيع أي شخص يملك صلاحيات root على خادم VPS الاحتياطي قراءتها.

التشفير من جانب العميل، بحيث لا يرى الهدف النص الصريح

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

يشفّر restic كل جزء على المصدر قبل إرساله، لذلك يتكون المستودع من نص مشفّر وبيانات وصفية عن الأحجام والتوقيت. يجعل PBS التشفير اختيارياً: أنشئ مفتاحاً، ثم مرّره مع كل نسخة احتياطية.

proxmox-backup-client key create /root/pbs-encryption.key
proxmox-backup-client backup root.pxar:/ --keyfile /root/pbs-encryption.key
proxmox-backup-client key paperkey --output-format text > qrkey.txt

اطبع المفتاح الورقي واحفظه في مكان فعلي. توضح وثائق Proxmox أهمية ذلك صراحةً: من دون مفتاحها، يتعذر الوصول إلى الملفات التي جرى نسخها احتياطياً. احتفظ بالمفتاح بعيداً عن هدف النسخ الاحتياطي، لأن تخزين المفتاح بجوار النص المشفّر لا يحمي أي شيء.

لا تملك نسخ rsync المتطابقة بديلاً مماثلاً. تصل الملفات إلى الهدف كملفات عادية. إذا كانت البيانات حساسة، فإما أن تقبل قدرة الهدف على قراءتها، أو تستخدم أحد الخيارين الآخرين.

إيقاف مصدر مخترق عن محو نسخه الاحتياطية بنفسه

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

يعالج PBS ذلك باستخدام الأدوار. يمكن لرمز يحمل DatastoreBackup فقط كتابة لقطات جديدة واستعادة لقطاته الخاصة، ولا يمكنه تنفيذ prune، لأن حذف لقطة يتطلب الامتياز المنفصل Datastore.Prune. نفّذ سياسة الاحتفاظ من جهة PBS، وبذلك لا يحتفظ المصدر أبداً ببيانات اعتماد تزيل أي شيء.

لا يوفّر restic عبر SFTP فصلاً مماثلاً، لأن مفتاح SSH الذي يكتب إلى المستودع يمكنه أيضاً الحذف منه. الحل هو REST backend. شغّل rest-server على خادم VPS للنسخ الاحتياطية باستخدام --append-only، إذ يسمح ذلك بإنشاء نسخ احتياطية جديدة، لكنه يمنع حذف النسخ الحالية وتعديلها، ثم وجّه العميل إلى rest:https://backup.example.net:8000/web1 باستخدام RESTIC_REST_USERNAME وRESTIC_REST_PASSWORD. سيفشل restic forget --prune من المصدر، وهذه هي النتيجة المطلوبة، لذلك تُشغَّل سياسة الاحتفاظ من جهاز ثانٍ باستخدام بيانات اعتماد خاصة به. يوصي دليل restic أيضاً باستخدام --keep-within بدلاً من سياسات تعتمد على العدد في المستودعات ذات الإضافة فقط، لأن المهاجم إذا أغرق المستودع بلقطات غير مفيدة فسيدفع اللقطات الحقيقية خارج نافذة --keep-last.

يحل rsync المشكلة نفسها بنيوياً من خلال السحب، لأن المصدر لا يحتفظ ببيانات اعتماد للهدف.

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

ضع اختبار الاستعادة في التقويم

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

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

تعني طباعة diff -r لا شيء أن شجرة الملفات المستعادة تطابق الشجرة الفعلية. في PBS، يكون الاختبار نفسه هو proxmox-backup-client restore host/web1/2026-08-13T02:30:00Z root.pxar /var/tmp/restore-test/، إضافةً إلى مهمة تحقق مجدولة تعيد قراءة الكتل على الهدف وتبلّغ عن حالات فشل التحقق من المجموع الاختباري.

يجب أن يثبت الاختبار أكثر من سلامة وحدات البايت.

  • استعد النسخة من جهاز ثالث، وليس من المصدر، لأن المصدر هو بالضبط ما تفترض أنه فُقد. لذلك يجب أن تكون كلمة مرور المستودع أو مفتاح PBS قابلة للوصول من دون المصدر.
  • احسب مدة الاستعادة وسجّل الرقم، ثم قارنه بـRTO الذي أعلنت عنه. يوضح المخطط أعلاه الحد الأدنى لزمن النقل. يشمل الرقم الفعلي أيضاً فك التشفير والكتابة إلى القرص، إضافةً إلى الوقت اللازم لتحديد اللقطة المطلوبة.
  • استعد شيئاً ذا حالة، مثل تفريغ قاعدة بيانات تحمّله بعد ذلك في مثيل مؤقت. استخراج ملف tar بنجاح لا يثبت أن التطبيق سيبدأ.

لا تساوي قيمة أرخص قرص في العالم شيئاً إلى أن تستعيد منه مرة واحدة.

FAQ

هل تُعدّ اللقطة في مزود VPS نسخة احتياطية خارج الموقع؟

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

ما مقدار مساحة القرص التي أحتاج إليها للاحتفاظ بنسخ احتياطية لمدة شهر؟

حدّد الحجم انطلاقاً من عمر أقدم لقطة، لا من عدد اللقطات. تخزّن أداة إزالة التكرار كل كتلة فريدة مرة واحدة، لذلك يكون حجم المستودع تقريباً حجم المصدر، مضافاً إليه حجم البيانات الفريدة الجديدة يومياً مضروباً في عدد الأيام التي تحتفظ بها. بالنسبة إلى 500 GB من البيانات التي تتغير بمقدار 5 GB يومياً، يبلغ حجم النسخ اليومية لمدة أسبوع نحو 535 GB، ويبلغ حجم سجل كامل لمدة عام 2,325 GB. اشترِ سعة إضافية فوق ذلك، لأن امتلاء القرص يفشل النسخة الاحتياطية التالية، كما تحتاج عملية prune في restic إلى مساحة حرة لإعادة حزم ملفات pack قبل أن تتمكن من إعادة المساحة.

هل يستطيع خادم مخترق حذف نسخه الاحتياطية خارج الموقع؟

نعم، ما لم تصمّم النظام لمنع ذلك. في مستودع SSH أو SFTP عادي، يستطيع المفتاح الذي يكتب البيانات حذفها أيضاً. امنح المصدر بيانات اعتماد لا تسمح بإزالة البيانات: رمز PBS مميز لواجهة API لا يحمل إلا الدور DatastoreBackup، ويفتقر إلى الامتياز Datastore.Prune، أو استخدم restic مع rest-server الذي بدأ باستخدام --append-only، إذ يرفض حذف النسخ الاحتياطية الموجودة وتعديلها. يذهب تصميم السحب إلى أبعد من ذلك، لأن المصدر لا يحتفظ عندئذ بأي بيانات اعتماد لمضيف النسخ الاحتياطي. نفّذ سياسة الاحتفاظ من الجهة التي ليست المصدر.

هل أشغّل Proxmox Backup Server أم restic على VPS المخصص للنسخ الاحتياطي؟

طابق الأداة مع الوحدة التي تريد استعادتها. إذا كان المصدر هو Proxmox VE وتريد استعادة آلة افتراضية كاملة، فشغّل PBS، لأنه ينسخ البيانات على مستوى صورة القرص ويستعيد آلة افتراضية في خطوة واحدة. إذا كان المصدر مضيف Linux وتريد استعادة الملفات ونسخ قواعد البيانات، فشغّل restic، إذ لا يحتاج إلا إلى حساب SSH على الهدف ويشفّر البيانات قبل إرسالها. من الطبيعي تشغيل الأداتين معاً: PBS لبرنامج hypervisor، وrestic للخوادم التي لا تعمل عليه.

كم تستغرق الاستعادة من نسخة احتياطية على VPS؟

اقسم حجم البيانات على سرعة الاتصال لتحصل على الحد الأدنى للمدة، ثم أضف وقت فك التشفير والكتابة. يستغرق نقل 500 GB عبر اتصال بسرعة 100 Mbit/s مدة 11.1 ساعة عند سرعة الخط، بينما تستغرق الاستعادة نفسها عبر منفذ بسرعة 1 Gbit/s مدة 1.1 ساعة. تستغرق العمليات التي تتعامل مع ملفات صغيرة كثيرة وقتاً أطول من الحساب النظري بسبب النفقات الإضافية لكل ملف. قِس مدة استعادة فعلية واحدة، واستخدم الرقم المقاس، لأنه الرقم الوحيد الذي يمكن لخطة التعافي الاعتماد عليه.

#نسخ احتياطية#restic#proxmox-backup-server#storage-vps#3-2-1