Резервное копирование и восстановление игрового сервера
Автоматическое резервное копирование, настройка cron, удалённое копирование через rsync.
Содержание
Введение
Резервное копирование игрового сервера — это важнейший шаг для предотвращения потери данных. Файлы миров, данные игроков, конфигурационные файлы и настройки модов/плагинов должны регулярно резервироваться. Это руководство охватывает автоматические скрипты резервного копирования, настройку cron, удалённое резервное копирование с rsync и управление файлами миров для различных игровых серверов.
Стратегия резервного копирования
Правило 3-2-1
- 3 копии: Оригинал + 2 резервные копии
- 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.