Skip to content
VDS · النسخ الاحتياطية والقرص

نسخ احتياطية باستخدام rsync

كيف تُعدّ نسخ الملفات إلى خادم آخر عبر SSH، وتنشئ سجل إصدارات باستخدام الروابط الصلبة، وتتجنب الحذف المفرط بخيار --delete الخطير.

آخر تحديث 23 أغسطس 2026

يُعدّ rsync أبسط طريقة فعّالة لإنشاء النسخ: فهو متاح في كل مكان، وينقل الأجزاء المتغيّرة من الملفات فقط، ويعمل عبر SSH. بالنسبة لمجموعات البيانات الصغيرة، هذا كافٍ.

الأمر الأساسي

rsync -avz --delete \
  -e "ssh -i /root/.ssh/backup_key -p 22" \
  /var/www/ backup@backup.example.com:/srv/backup/vds/www/

شرح الخيارات:

  • -a — الحفاظ على الأذونات والمالكين والأوقات والروابط؛
  • -v — إظهار ما يجري؛
  • -z — الضغط أثناء النقل (مفيد عند عرض النطاق حتى 500 Mbps إذا كانت كمية البيانات كبيرة)؛
  • --delete — حذف ما لم يعد موجودًا على المصدر من المستقبِل.

تعني الشرطة المائلة في نهاية مسار المصدر «محتويات المجلد»؛ وبدونها يُنسخ المجلد نفسه. ينتج عن /var/www/ و/var/www نتيجتان مختلفتان، ومع --delete يمحو هذا الفرق الشيء الخطأ. شغّل دائمًا مع --dry-run أولًا.

rsync -avzn --delete /var/www/ backup@backup.example.com:/srv/backup/vds/www/

الخيار -n هو التشغيل التجريبي.

مفتاح وصول بدون كلمة مرور

يتطلب النسخ المجدول تسجيل الدخول دون إدخال كلمة مرور:

ssh-keygen -t ed25519 -f /root/.ssh/backup_key -N ""
ssh-copy-id -i /root/.ssh/backup_key.pub backup@backup.example.com

على المستقبِل، قيّد هذا المفتاح بأمر واحد — عندئذٍ لن يمنح المفتاح المسروق وصولًا إلى صدفة. في ملف ~/.ssh/authorized_keys على المستقبِل:

command="rrsync -wo /srv/backup",restrict ssh-ed25519 AAAA... backup

سجل الإصدارات بالروابط الصلبة

يحتفظ rsync العادي بالحالة الحالية فقط: إذا حذفت ملفًا أمس ولاحظت ذلك اليوم، فلا يوجد مكان لاستعادته منه. يمنحك --link-dest سجلًا: لا تُنسخ الملفات غير المتغيّرة مرة أخرى بل تُربط، لذا لا تشغل ثلاثون نسخة أكثر بكثير من نسخة واحدة.

#!/bin/bash
set -euo pipefail
DEST=/srv/backup/vds
TODAY=$(date +%F)
rsync -a --delete \
  --link-dest="$DEST/latest" \
  /var/www/ "$DEST/$TODAY/"
ln -sfn "$DEST/$TODAY" "$DEST/latest"
find "$DEST" -maxdepth 1 -type d -mtime +30 -name "20*" -exec rm -rf {} +

شغّل السكربت وفق جدول ليلًا، ودائمًا مع التسجيل.

الاستثناءات

rsync -avz --exclude-from=/root/backup-exclude.txt / backup@host:/srv/backup/vds/root/
/proc/
/sys/
/dev/
/run/
/tmp/
/var/lib/docker/
/var/cache/
*.log

نادرًا ما يكون نسخ الجذر بأكمله ضروريًا: الأجدى بناء قائمة دقيقة من مقالة ما الذي يجب نسخه احتياطيًا بالضبط.

متى لا يكون rsync مناسبًا

  • إذا كنت بحاجة إلى تشفير التخزين وإزالة التكرار، فاستخدم Restic.
  • إذا كانت البيانات تتغيّر باستمرار وكانت السلامة مهمة، فافرغ قاعدة البيانات أولًا، ثم انسخ الملف الناتج باستخدام rsync.
  • إذا كان المستقبِل تخزينًا لشخص آخر لا تثق به: يكتب rsync الملفات كما هي، دون تشفير من جانب العميل.

أخطاء شائعة

  • --delete مع مسار مصدر خاطئ. مجلد مصدر فارغ يمحو المستقبِل. التشغيل التجريبي إلزامي.
  • نسخة على القرص نفسه. هذه ليست نسخة احتياطية، بل هدف ثانٍ للعطل نفسه. راجع النسخ خارج الموقع.
  • الضغط لبيانات مضغوطة أصلًا. -z يبطئ الأرشيفات والصور فقط.
  • التشغيل الليلي يصطدم باختناق القرص. يعتمد حد إنتاجية الكتابة على المستوى: راجع سرعة القرص. يساعد --bwlimit=20000 والتشغيل في ساعات الذروة المنخفضة.
  • لا أحد يتحقق من النتيجة. سجّل رمز الإرجاع وراقبه: rsync ... || echo "backup failed" | mail -s alert you@example.com.