النسخ الاحتياطي واستعادة خادم الألعاب
النسخ الاحتياطي التلقائي، تكوين cron، النسخ الاحتياطي عن بُعد باستخدام rsync.
جدول المحتويات
مقدمة
النسخ الاحتياطي لخادم الألعاب هو الخطوة الأكثر أهمية لمنع فقدان البيانات. يجب نسخ ملفات العوالم وبيانات اللاعبين وملفات التكوين وإعدادات التعديلات/الإضافات بشكل منتظم. يغطي هذا الدليل سكريبتات النسخ الاحتياطي التلقائي وتكوين cron والنسخ الاحتياطي عن بُعد باستخدام rsync وإدارة ملفات العوالم لخوادم الألعاب المختلفة.
استراتيجية النسخ الاحتياطي
قاعدة 3-2-1
- 3 نسخ: الأصل + نسختان احتياطيتان
- 2 وسائط مختلفة: قرص محلي + خادم بعيد
- 1 خارج الموقع: نسخة احتياطية في موقع مختلف
أنواع النسخ الاحتياطي
| النوع | الوصف | الميزة | العيب |
|---|---|---|---|
| كامل | ينسخ جميع الملفات | استعادة سهلة | حجم كبير |
| تزايدي | الملفات المتغيرة فقط | حجم صغير | استعادة معقدة |
| تفاضلي | التغييرات منذ آخر نسخة كاملة | حجم متوسط | تعقيد متوسط |
سكريبت النسخ الاحتياطي التلقائي
نسخ احتياطي للأغراض العامة
nano ~/backup_gameserver.sh
#!/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
chmod +x ~/backup_gameserver.sh
النسخ الاحتياطي التلقائي باستخدام Cron
تكوين Crontab
crontab -e
# نسخ احتياطي لـ 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
sudo apt install rsync -y
النسخ الاحتياطي إلى خادم بعيد
nano ~/remote_backup.sh
#!/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
chmod +x ~/remote_backup.sh
crontab -e
0 5 * * * /home/steam/remote_backup.sh
معاملات rsync
| المعامل | الوصف |
|---|---|
| -a | وضع الأرشيف (يحفظ الأذونات والتواريخ) |
| -v | إخراج مفصل |
| -z | ضغط |
| --delete | حذف الملفات غير الموجودة في المصدر من الوجهة |
| -e | معاملات اتصال SSH |
إدارة ملفات العالم
ملفات عالم Minecraft
# أدلة العالم
~/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
~/rustserver/server/rust/
~/rustserver/server/rust/player.blueprints.5.db
~/rustserver/server/rust/proceduralmap.*.sav
الاستعادة
خطوات الاستعادة العامة
# 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
استعادة ملفات محددة
# قائمة محتويات النسخة الاحتياطية
tar -tzf ~/backups/gameserver/gameserver_20250101_120000.tar.gz
# استخراج ملف محدد
tar -xzf ~/backups/gameserver/gameserver_20250101_120000.tar.gz home/steam/gameserver/config.ini
مراقبة النسخ الاحتياطي
# فحص أحجام النسخ الاحتياطية
du -sh ~/backups/*/
# قائمة النسخ الاحتياطية الأخيرة
ls -lht ~/backups/minecraft/ | head -10
# فحص استخدام القرص
df -h
الخلاصة
النسخ الاحتياطي المنتظم جزء أساسي من إدارة خادم الألعاب. باستخدام سكريبتات النسخ الاحتياطي التلقائي وجدولة cron والنسخ الاحتياطي عن بُعد باستخدام rsync، يمكنك الحفاظ على بياناتك آمنة. توفر البنية التحتية REXE VDS NVMe SSD عمليات نسخ احتياطي واستعادة سريعة.
مقالات ذات صلة
كيفية تثبيت خادم FiveM: دليل خطوة بخطوة
دليل شامل لتثبيت خادم FiveM على REXE VDS: إعداد txAdmin، إعدادات المنافذ وتحسين الأداء لخوادم GTA V Roleplay. ابدأ خادمك في دقائق.
كيفية تثبيت خادم Minecraft: دليل Paper
دليل شامل لتثبيت خادم Paper/Spigot Minecraft على REXE VDS: إعدادات Java، إدارة الإضافات وتحسين الأداء للحصول على تجربة لعب مستقرة.
كيفية تثبيت خادم CS2: دليل شامل
دليل شامل لتثبيت خادم CS2 المخصص على REXE VDS: SteamCMD، رمز GSLT، إعداد الخادم، أوضاع اللعب وحماية DDoS عبر Path Panel.