انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

النسخ الاحتياطي واستعادة خادم الألعاب

النسخ الاحتياطي التلقائي، تكوين cron، النسخ الاحتياطي عن بُعد باستخدام rsync.

وقت القراءة: 12 dk إعداد خادم الألعاب
نسخ احتياطياستعادةcronrsyncملفات العالمخادم ألعاب
الكاتب
REXE Teknoloji Network & Security Team
المحرر
REXE Teknoloji Technical Editorial
أول نشر
آخر تحديث

مقدمة

النسخ الاحتياطي لخادم الألعاب هو الخطوة الأكثر أهمية لمنع فقدان البيانات. يجب نسخ ملفات العوالم وبيانات اللاعبين وملفات التكوين وإعدادات التعديلات/الإضافات بشكل منتظم. يغطي هذا الدليل سكريبتات النسخ الاحتياطي التلقائي وتكوين cron والنسخ الاحتياطي عن بُعد باستخدام rsync وإدارة ملفات العوالم لخوادم الألعاب المختلفة.

استراتيجية النسخ الاحتياطي

قاعدة 3-2-1

  • 3 نسخ: الأصل + نسختان احتياطيتان
  • 2 وسائط مختلفة: قرص محلي + خادم بعيد
  • 1 خارج الموقع: نسخة احتياطية في موقع مختلف

أنواع النسخ الاحتياطي

النوعالوصفالميزةالعيب
كاملينسخ جميع الملفاتاستعادة سهلةحجم كبير
تزايديالملفات المتغيرة فقطحجم صغيراستعادة معقدة
تفاضليالتغييرات منذ آخر نسخة كاملةحجم متوسطتعقيد متوسط

سكريبت النسخ الاحتياطي التلقائي

نسخ احتياطي للأغراض العامة

hljs bash
nano ~/backup_gameserver.sh
hljs bash
#!/bin/bash
GAME_NAME=${1:-"gameserver"}
BACKUP_BASE="/home/steam/backups"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
LOG="/home/steam/backup.log"

declare -A SAVE_DIRS
SAVE_DIRS[minecraft]="/home/steam/minecraft/world /home/steam/minecraft/plugins"
SAVE_DIRS[rust]="/home/steam/rustserver/server/rust /home/steam/rustserver/oxide"
SAVE_DIRS[fivem]="/home/steam/fxserver/resources /home/steam/fxserver/server-data"
SAVE_DIRS[vrising]="/home/steam/vrising/save-data"
SAVE_DIRS[satisfactory]="/home/steam/satisfactory/.config/Epic/FactoryServer/Saved/SaveGames"
SAVE_DIRS[pz]="/home/steam/Zomboid/Saves /home/steam/Zomboid/Server"
SAVE_DIRS[enshrouded]="/home/steam/enshrouded/savegame"

BACKUP_DIR="$BACKUP_BASE/$GAME_NAME"
mkdir -p "$BACKUP_DIR"

echo "$(date): Starting $GAME_NAME backup..." >> $LOG

if [ -n "${SAVE_DIRS[$GAME_NAME]}" ]; then
    tar -czf "$BACKUP_DIR/${GAME_NAME}_${DATE}.tar.gz" ${SAVE_DIRS[$GAME_NAME]} 2>/dev/null
    if [ $? -eq 0 ]; then
        SIZE=$(du -h "$BACKUP_DIR/${GAME_NAME}_${DATE}.tar.gz" | cut -f1)
        echo "$(date): Backup successful - $SIZE" >> $LOG
    else
        echo "$(date): ERROR - Backup failed!" >> $LOG
    fi
else
    echo "$(date): ERROR - Unknown game: $GAME_NAME" >> $LOG
    exit 1
fi

find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
COUNT=$(find "$BACKUP_DIR" -name "*.tar.gz" | wc -l)
echo "$(date): Cleanup done. Current backup count: $COUNT" >> $LOG
hljs bash
chmod +x ~/backup_gameserver.sh

النسخ الاحتياطي التلقائي باستخدام Cron

تكوين Crontab

hljs bash
crontab -e
hljs cron
# نسخ احتياطي لـ Minecraft كل 4 ساعات
0 */4 * * * /home/steam/backup_gameserver.sh minecraft

# نسخ احتياطي لـ Rust كل 6 ساعات
0 */6 * * * /home/steam/backup_gameserver.sh rust

# نسخ احتياطي يومي لـ FiveM
0 3 * * * /home/steam/backup_gameserver.sh fivem

# نسخ احتياطي يومي لـ V Rising
0 4 * * * /home/steam/backup_gameserver.sh vrising

# نسخ احتياطي كامل أسبوعي (الأحد 02:00)
0 2 * * 0 /home/steam/backup_full.sh

دليل تعبيرات Cron

# دقيقة (0-59) | ساعة (0-23) | يوم (1-31) | شهر (1-12) | يوم الأسبوع (0-7)
# * * * * * أمر

النسخ الاحتياطي عن بُعد باستخدام rsync

تثبيت rsync

hljs bash
sudo apt install rsync -y

النسخ الاحتياطي إلى خادم بعيد

hljs bash
nano ~/remote_backup.sh
hljs bash
#!/bin/bash
REMOTE_HOST="backup.example.com"
REMOTE_USER="backup"
REMOTE_DIR="/backups/gameserver"
LOCAL_DIR="/home/steam/backups"
LOG="/home/steam/remote_backup.log"

echo "$(date): Starting remote backup..." >> $LOG

rsync -avz --delete \
  -e "ssh -p 22 -i /home/steam/.ssh/backup_key" \
  "$LOCAL_DIR/" \
  "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"

if [ $? -eq 0 ]; then
    echo "$(date): Remote backup successful." >> $LOG
else
    echo "$(date): ERROR - Remote backup failed!" >> $LOG
fi
hljs bash
chmod +x ~/remote_backup.sh
crontab -e
0 5 * * * /home/steam/remote_backup.sh

معاملات rsync

المعاملالوصف
-aوضع الأرشيف (يحفظ الأذونات والتواريخ)
-vإخراج مفصل
-zضغط
--deleteحذف الملفات غير الموجودة في المصدر من الوجهة
-eمعاملات اتصال SSH

إدارة ملفات العالم

ملفات عالم Minecraft

hljs bash
# أدلة العالم
~/minecraft/world/
~/minecraft/world_nether/
~/minecraft/world_the_end/

# حفظ قبل النسخ الاحتياطي
screen -S minecraft -p 0 -X stuff "save-all\n"
sleep 5
screen -S minecraft -p 0 -X stuff "save-off\n"
tar -czf ~/backups/minecraft/world_$(date +%Y%m%d).tar.gz ~/minecraft/world*
screen -S minecraft -p 0 -X stuff "save-on\n"

ملفات عالم Rust

hljs bash
~/rustserver/server/rust/
~/rustserver/server/rust/player.blueprints.5.db
~/rustserver/server/rust/proceduralmap.*.sav

الاستعادة

خطوات الاستعادة العامة

hljs bash
# 1. إيقاف الخادم
sudo systemctl stop gameserver

# 2. نسخ احتياطي للملفات الحالية (أمان)
mv ~/gameserver/save ~/gameserver/save_old

# 3. استعادة النسخة الاحتياطية
tar -xzf ~/backups/gameserver/gameserver_20250101_120000.tar.gz -C /

# 4. تشغيل الخادم
sudo systemctl start gameserver

# 5. فحص السجلات
sudo journalctl -u gameserver -f

استعادة ملفات محددة

hljs bash
# قائمة محتويات النسخة الاحتياطية
tar -tzf ~/backups/gameserver/gameserver_20250101_120000.tar.gz

# استخراج ملف محدد
tar -xzf ~/backups/gameserver/gameserver_20250101_120000.tar.gz home/steam/gameserver/config.ini

مراقبة النسخ الاحتياطي

hljs bash
# فحص أحجام النسخ الاحتياطية
du -sh ~/backups/*/

# قائمة النسخ الاحتياطية الأخيرة
ls -lht ~/backups/minecraft/ | head -10

# فحص استخدام القرص
df -h

الخلاصة

النسخ الاحتياطي المنتظم جزء أساسي من إدارة خادم الألعاب. باستخدام سكريبتات النسخ الاحتياطي التلقائي وجدولة cron والنسخ الاحتياطي عن بُعد باستخدام rsync، يمكنك الحفاظ على بياناتك آمنة. توفر البنية التحتية REXE VDS NVMe SSD عمليات نسخ احتياطي واستعادة سريعة.

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

كم مرة يجب إجراء النسخ الاحتياطي؟

يعتمد على نوع اللعبة. كل 4-6 ساعات للخوادم النشطة، يومياً للخوادم منخفضة النشاط.

كم من الوقت يجب الاحتفاظ بالنسخ الاحتياطية؟

يُوصى بـ 7 أيام على الأقل. للخوادم الحرجة، احتفظ بها حتى 30 يوماً. اضبط بناءً على مساحة القرص.

هل النسخ الاحتياطي عن بُعد باستخدام rsync آمن؟

نعم، يستخدم rsync اتصالات SSH مشفرة. يمكنك إضافة أمان إضافي باستخدام مصادقة مفتاح SSH.

هل يمكن تشغيل الخادم أثناء النسخ الاحتياطي؟

يمكن لمعظم خوادم الألعاب العمل أثناء النسخ الاحتياطي. ومع ذلك، بالنسبة لألعاب مثل Minecraft، يُوصى بإيقاف الكتابة مؤقتاً باستخدام أمر save-off.

كم من الوقت تستغرق الاستعادة؟

يعتمد على حجم النسخة الاحتياطية وسرعة القرص. مع NVMe SSD، تُستعاد النسخ الاحتياطية الصغيرة في ثوانٍ، والكبيرة في دقائق.

مقالات ذات صلة

كيفية تثبيت خادم Minecraft: دليل Paper

دليل شامل لتثبيت خادم Paper/Spigot Minecraft على REXE VDS: إعدادات Java، إدارة الإضافات وتحسين الأداء للحصول على تجربة لعب مستقرة.

11 دقائق
minecraftpaperspigot

كيفية تثبيت خادم CS2: دليل شامل

دليل شامل لتثبيت خادم CS2 المخصص على REXE VDS: SteamCMD، رمز GSLT، إعداد الخادم، أوضاع اللعب وحماية DDoS عبر Path Panel.

10 دقائق
cs2counter-strikesteamcmd
حركة الشبكةالداخل Gbpsالخارج Gbps