Перейти к основному содержимому
Вернуться в категорию

Резервное копирование и восстановление игрового сервера

Автоматическое резервное копирование, настройка cron, удалённое копирование через rsync.

Время чтения: 12 dk Настройка игровых серверов
резервное копированиевосстановлениеcronrsyncфайлы мираигровой сервер

Содержание

Введение

Резервное копирование игрового сервера — это важнейший шаг для предотвращения потери данных. Файлы миров, данные игроков, конфигурационные файлы и настройки модов/плагинов должны регулярно резервироваться. Это руководство охватывает автоматические скрипты резервного копирования, настройку cron, удалённое резервное копирование с rsync и управление файлами миров для различных игровых серверов.

Стратегия резервного копирования

Правило 3-2-1

  • 3 копии: Оригинал + 2 резервные копии
  • 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 обеспечивает быстрые операции резервного копирования и восстановления.