Ana içeriğe geç
Kategoriye Dön

Oyun Sunucusu Yedekleme ve Geri Yükleme

Oyun sunucusu otomatik yedekleme, cron yapılandırması, rsync ile uzak yedekleme ve dünya dosyası yönetimi rehberi.

Okuma süresi: 12 dk Oyun Sunucusu Kurulumları
yedeklemegeri yüklemecronrsyncdünya dosyasıoyun sunucusu

İçindekiler

Giriş

Oyun sunucusu yedekleme, veri kaybını önlemek için atılması gereken en kritik adımdır. Dünya dosyaları, oyuncu verileri, yapılandırma dosyaları ve mod/plugin ayarları düzenli olarak yedeklenmelidir. Bu rehber, otomatik yedekleme scriptleri, cron yapılandırması, rsync ile uzak yedekleme ve farklı oyun sunucuları için dünya dosyası yönetimini kapsar.

Yedekleme Stratejisi

3-2-1 Kuralı

  • 3 kopya: Orijinal + 2 yedek
  • 2 farklı ortam: Yerel disk + uzak sunucu
  • 1 farklı lokasyon: Başka bir konumda yedek

Yedekleme Türleri

TürAçıklamaAvantajDezavantaj
TamTüm dosyaları yedeklerKolay geri yüklemeBüyük boyut
ArtımlıSadece değişen dosyalarKüçük boyutKarmaşık geri yükleme
FarksalSon tam yedekten beri değişenlerOrta boyutOrta karmaşıklık

Otomatik Yedekleme Scripti

Genel Amaçlı Yedekleme

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 Otomatik Yedekleme

Crontab Yapılandırması

hljs bash
crontab -e
hljs cron
# Her 4 saatte bir Minecraft yedekle
0 */4 * * * /home/steam/backup_gameserver.sh minecraft

# Her 6 saatte bir Rust yedekle
0 */6 * * * /home/steam/backup_gameserver.sh rust

# Günlük FiveM yedekleme
0 3 * * * /home/steam/backup_gameserver.sh fivem

# Günlük V Rising yedekleme
0 4 * * * /home/steam/backup_gameserver.sh vrising

# Haftalık tam yedekleme (Pazar 02:00)
0 2 * * 0 /home/steam/backup_full.sh

Cron İfade Rehberi

# dakika (0-59) | saat (0-23) | gün (1-31) | ay (1-12) | haftanın günü (0-7)
# * * * * * komut

rsync ile Uzak Yedekleme

rsync Kurulumu

hljs bash
sudo apt install rsync -y

Uzak Sunucuya Yedekleme

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 Parametreleri

ParametreAçıklama
-aArşiv modu (izinleri, tarihleri korur)
-vAyrıntılı çıktı
-zSıkıştırma
--deleteKaynakta olmayan dosyaları hedeften sil
-eSSH bağlantı parametreleri

Dünya Dosyası Yönetimi

Minecraft Dünya Dosyaları

hljs bash
# Dünya dizinleri
~/minecraft/world/
~/minecraft/world_nether/
~/minecraft/world_the_end/

# Yedeklemeden önce kaydet
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 Dünya Dosyaları

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

Geri Yükleme

Genel Geri Yükleme Adımları

hljs bash
# 1. Sunucuyu durdur
sudo systemctl stop gameserver

# 2. Mevcut dosyaları yedekle (güvenlik)
mv ~/gameserver/save ~/gameserver/save_old

# 3. Yedeği geri yükle
tar -xzf ~/backups/gameserver/gameserver_20250101_120000.tar.gz -C /

# 4. Sunucuyu başlat
sudo systemctl start gameserver

# 5. Logları kontrol et
sudo journalctl -u gameserver -f

Belirli Dosyaları Geri Yükleme

hljs bash
# Yedek içeriğini listele
tar -tzf ~/backups/gameserver/gameserver_20250101_120000.tar.gz

# Belirli dosyayı çıkart
tar -xzf ~/backups/gameserver/gameserver_20250101_120000.tar.gz home/steam/gameserver/config.ini

Yedekleme İzleme

hljs bash
# Yedek boyutlarını kontrol et
du -sh ~/backups/*/

# Son yedekleri listele
ls -lht ~/backups/minecraft/ | head -10

# Disk kullanımını kontrol et
df -h

Sonuç

Düzenli yedekleme, oyun sunucusu yönetiminin vazgeçilmez bir parçasıdır. Otomatik yedekleme scriptleri, cron zamanlaması ve rsync uzak yedekleme kullanarak verilerinizi güvende tutabilirsiniz. REXE VDS NVMe SSD altyapısı, hızlı yedekleme ve geri yükleme işlemleri sağlar.