Настройка автоматических бэкапов Minecraft — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Настройка автоматических бэкапов Minecraft = == 1. Подготовка системы == * Войдите в систему п…»)
(нет различий)

Версия 09:59, 15 октября 2025

Настройка автоматических бэкапов Minecraft

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
  • Рекомендуется использовать Ubuntu 24.04 LTS для стабильной работы.

2. Установка необходимых пакетов =

Обновление системы

1. Обновите систему: sudo apt update sudo apt upgrade -y

2. Установите необходимые пакеты: sudo apt install -y rsync tar gzip zip unzip cron mailutils

Настройка cron

1. Убедитесь, что cron запущен: sudo systemctl start cron sudo systemctl enable cron

2. Проверьте статус: sudo systemctl status cron

3. Создание структуры бэкапов =

Создание директорий

1. Создайте основную директорию для бэкапов: sudo mkdir -p /backup/minecraft

2. Создайте поддиректории: sudo mkdir -p /backup/minecraft/worlds sudo mkdir -p /backup/minecraft/plugins sudo mkdir -p /backup/minecraft/configs sudo mkdir -p /backup/minecraft/logs

3. Установите права доступа: sudo chown -R minecraft:minecraft /backup/minecraft sudo chmod -R 755 /backup/minecraft

Настройка ротации бэкапов

1. Создайте скрипт ротации: sudo nano /usr/local/bin/backup-rotation.sh

2. Добавьте содержимое: #!/bin/bash

BACKUP_DIR="/backup/minecraft" RETENTION_DAYS=7

  1. Удаление старых бэкапов

find $BACKUP_DIR -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete find $BACKUP_DIR -name "*.zip" -mtime +$RETENTION_DAYS -delete

  1. Удаление пустых директорий

find $BACKUP_DIR -type d -empty -delete

echo "Backup rotation completed: $(date)"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/backup-rotation.sh

4. Создание скрипта бэкапа =

Базовый скрипт бэкапа

1. Создайте основной скрипт бэкапа: sudo nano /usr/local/bin/minecraft-backup.sh

2. Добавьте содержимое: #!/bin/bash

  1. Настройки бэкапа

BACKUP_DIR="/backup/minecraft" SERVER_DIR="/opt/minecraft" DATE=$(date +%Y%m%d_%H%M%S) LOG_FILE="/var/log/minecraft-backup.log"

  1. Функция логирования

log_message() {

   echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE

}

  1. Проверка доступности сервера

if [ ! -d "$SERVER_DIR" ]; then

   log_message "ERROR: Server directory not found: $SERVER_DIR"
   exit 1

fi

log_message "Starting Minecraft backup..."

  1. Создание директории для бэкапа

mkdir -p $BACKUP_DIR/$DATE

  1. Остановка сервера для бэкапа

log_message "Stopping Minecraft server..." systemctl stop minecraft-spigot 2>/dev/null || true systemctl stop minecraft-paper 2>/dev/null || true systemctl stop minecraft-bukkit 2>/dev/null || true

  1. Ожидание полной остановки

sleep 10

  1. Создание архива мира

log_message "Backing up world data..." if [ -d "$SERVER_DIR/world" ]; then

   tar -czf $BACKUP_DIR/$DATE/world-$DATE.tar.gz -C $SERVER_DIR world
   log_message "World backup completed"

fi

  1. Создание архива плагинов

log_message "Backing up plugins..." if [ -d "$SERVER_DIR/plugins" ]; then

   tar -czf $BACKUP_DIR/$DATE/plugins-$DATE.tar.gz -C $SERVER_DIR plugins
   log_message "Plugins backup completed"

fi

  1. Создание архива конфигурации

log_message "Backing up configuration..." tar -czf $BACKUP_DIR/$DATE/config-$DATE.tar.gz -C $SERVER_DIR server.properties bukkit.yml spigot.yml paper-global.yml 2>/dev/null || true log_message "Configuration backup completed"

  1. Создание архива логов

log_message "Backing up logs..." if [ -d "$SERVER_DIR/logs" ]; then

   tar -czf $BACKUP_DIR/$DATE/logs-$DATE.tar.gz -C $SERVER_DIR logs
   log_message "Logs backup completed"

fi

  1. Создание полного архива

log_message "Creating full backup archive..." tar -czf $BACKUP_DIR/minecraft-full-backup-$DATE.tar.gz -C $BACKUP_DIR $DATE log_message "Full backup archive created"

  1. Удаление временной директории

rm -rf $BACKUP_DIR/$DATE

  1. Запуск сервера

log_message "Starting Minecraft server..." systemctl start minecraft-spigot 2>/dev/null || systemctl start minecraft-paper 2>/dev/null || systemctl start minecraft-bukkit 2>/dev/null || true

log_message "Minecraft backup completed successfully"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/minecraft-backup.sh

5. Настройка инкрементальных бэкапов =

Создание скрипта инкрементального бэкапа

1. Создайте скрипт инкрементального бэкапа: sudo nano /usr/local/bin/minecraft-incremental-backup.sh

2. Добавьте содержимое: #!/bin/bash

  1. Настройки инкрементального бэкапа

BACKUP_DIR="/backup/minecraft" SERVER_DIR="/opt/minecraft" DATE=$(date +%Y%m%d_%H%M%S) LOG_FILE="/var/log/minecraft-incremental-backup.log" SNAPSHOT_DIR="$BACKUP_DIR/snapshots"

  1. Функция логирования

log_message() {

   echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE

}

  1. Создание директории для снапшотов

mkdir -p $SNAPSHOT_DIR

log_message "Starting incremental backup..."

  1. Создание снапшота мира

if [ -d "$SERVER_DIR/world" ]; then

   rsync -av --delete --link-dest=$SNAPSHOT_DIR/latest $SERVER_DIR/world/ $SNAPSHOT_DIR/world-$DATE/
   ln -sfn $SNAPSHOT_DIR/world-$DATE $SNAPSHOT_DIR/latest
   log_message "World incremental backup completed"

fi

  1. Создание снапшота плагинов

if [ -d "$SERVER_DIR/plugins" ]; then

   rsync -av --delete --link-dest=$SNAPSHOT_DIR/plugins-latest $SERVER_DIR/plugins/ $SNAPSHOT_DIR/plugins-$DATE/
   ln -sfn $SNAPSHOT_DIR/plugins-$DATE $SNAPSHOT_DIR/plugins-latest
   log_message "Plugins incremental backup completed"

fi

log_message "Incremental backup completed successfully"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/minecraft-incremental-backup.sh

6. Настройка удаленных бэкапов =

Установка rsync

1. Убедитесь, что rsync установлен: sudo apt install -y rsync

Создание скрипта удаленного бэкапа

1. Создайте скрипт удаленного бэкапа: sudo nano /usr/local/bin/minecraft-remote-backup.sh

2. Добавьте содержимое: #!/bin/bash

  1. Настройки удаленного бэкапа

BACKUP_DIR="/backup/minecraft" REMOTE_HOST="backup.example.com" REMOTE_USER="backup" REMOTE_DIR="/backup/minecraft" DATE=$(date +%Y%m%d_%H%M%S) LOG_FILE="/var/log/minecraft-remote-backup.log"

  1. Функция логирования

log_message() {

   echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE

}

log_message "Starting remote backup..."

  1. Синхронизация с удаленным сервером

rsync -avz --delete --progress $BACKUP_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/

if [ $? -eq 0 ]; then

   log_message "Remote backup completed successfully"

else

   log_message "ERROR: Remote backup failed"
   exit 1

fi

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/minecraft-remote-backup.sh

Настройка SSH ключей

1. Создайте SSH ключ для бэкапа: sudo -u minecraft ssh-keygen -t rsa -b 4096 -f /home/minecraft/.ssh/backup_key -N ""

2. Скопируйте публичный ключ на удаленный сервер: sudo -u minecraft ssh-copy-id -i /home/minecraft/.ssh/backup_key.pub backup@backup.example.com

7. Настройка расписания бэкапов =

Настройка cron

1. Отредактируйте crontab: sudo crontab -e

2. Добавьте задачи бэкапа: # Minecraft backups

  1. Полный бэкап каждый день в 3:00

0 3 * * * /usr/local/bin/minecraft-backup.sh

  1. Инкрементальный бэкап каждые 6 часов

0 */6 * * * /usr/local/bin/minecraft-incremental-backup.sh

  1. Удаленный бэкап каждый день в 4:00

0 4 * * * /usr/local/bin/minecraft-remote-backup.sh

  1. Ротация бэкапов каждый день в 5:00

0 5 * * * /usr/local/bin/backup-rotation.sh

Настройка уведомлений

1. Создайте скрипт уведомлений: sudo nano /usr/local/bin/backup-notification.sh

2. Добавьте содержимое: #!/bin/bash

  1. Настройки уведомлений

EMAIL="admin@example.com" LOG_FILE="/var/log/minecraft-backup.log"

  1. Проверка последнего бэкапа

LAST_BACKUP=$(tail -1 $LOG_FILE | grep "completed successfully")

if [ -z "$LAST_BACKUP" ]; then

   echo "Minecraft backup may have failed. Check logs: $LOG_FILE" | mail -s "Minecraft Backup Alert" $EMAIL

fi

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/backup-notification.sh

4. Добавьте в crontab: 0 6 * * * /usr/local/bin/backup-notification.sh

8. Мониторинг бэкапов =

Создание скрипта мониторинга

1. Создайте скрипт мониторинга: sudo nano /usr/local/bin/backup-monitor.sh

2. Добавьте содержимое: #!/bin/bash

  1. Мониторинг бэкапов

BACKUP_DIR="/backup/minecraft" LOG_FILE="/var/log/backup-monitor.log"

  1. Проверка размера бэкапов

BACKUP_SIZE=$(du -sh $BACKUP_DIR | awk '{print $1}') echo "[$(date)] Backup size: $BACKUP_SIZE" >> $LOG_FILE

  1. Проверка количества бэкапов

BACKUP_COUNT=$(find $BACKUP_DIR -name "*.tar.gz" | wc -l) echo "[$(date)] Backup count: $BACKUP_COUNT" >> $LOG_FILE

  1. Проверка последнего бэкапа

LAST_BACKUP=$(find $BACKUP_DIR -name "*.tar.gz" -type f -printf '%T@ %p\n' | sort -n | tail -1 | awk '{print $2}') if [ ! -z "$LAST_BACKUP" ]; then

   LAST_BACKUP_TIME=$(stat -c %Y "$LAST_BACKUP")
   CURRENT_TIME=$(date +%s)
   TIME_DIFF=$((CURRENT_TIME - LAST_BACKUP_TIME))
   
   if [ $TIME_DIFF -gt 86400 ]; then
       echo "[$(date)] WARNING: Last backup is older than 24 hours" >> $LOG_FILE
   fi

fi

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/backup-monitor.sh

4. Добавьте в crontab: */30 * * * * /usr/local/bin/backup-monitor.sh

9. Восстановление из бэкапа =

Создание скрипта восстановления

1. Создайте скрипт восстановления: sudo nano /usr/local/bin/minecraft-restore.sh

2. Добавьте содержимое: #!/bin/bash

  1. Скрипт восстановления из бэкапа

BACKUP_DIR="/backup/minecraft" SERVER_DIR="/opt/minecraft" RESTORE_DATE=$1

if [ -z "$RESTORE_DATE" ]; then

   echo "Usage: $0 <backup_date>"
   echo "Available backups:"
   ls -la $BACKUP_DIR/*.tar.gz | awk '{print $9}' | sed 's/.*minecraft-full-backup-//' | sed 's/.tar.gz//'
   exit 1

fi

BACKUP_FILE="$BACKUP_DIR/minecraft-full-backup-$RESTORE_DATE.tar.gz"

if [ ! -f "$BACKUP_FILE" ]; then

   echo "Backup file not found: $BACKUP_FILE"
   exit 1

fi

echo "Stopping Minecraft server..." systemctl stop minecraft-spigot 2>/dev/null || true systemctl stop minecraft-paper 2>/dev/null || true systemctl stop minecraft-bukkit 2>/dev/null || true

echo "Creating backup of current server..." tar -czf $BACKUP_DIR/current-server-backup-$(date +%Y%m%d_%H%M%S).tar.gz -C $SERVER_DIR .

echo "Restoring from backup: $BACKUP_FILE" tar -xzf $BACKUP_FILE -C $BACKUP_DIR tar -xzf $BACKUP_DIR/$RESTORE_DATE/world-$RESTORE_DATE.tar.gz -C $SERVER_DIR tar -xzf $BACKUP_DIR/$RESTORE_DATE/plugins-$RESTORE_DATE.tar.gz -C $SERVER_DIR tar -xzf $BACKUP_DIR/$RESTORE_DATE/config-$RESTORE_DATE.tar.gz -C $SERVER_DIR

echo "Starting Minecraft server..." systemctl start minecraft-spigot 2>/dev/null || systemctl start minecraft-paper 2>/dev/null || systemctl start minecraft-bukkit 2>/dev/null || true

echo "Restore completed successfully"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/minecraft-restore.sh

10. Устранение неполадок =

Частые проблемы

1. Бэкап не создается:

  • Проверьте права доступа к директориям
  • Проверьте свободное место на диске
  • Проверьте логи cron

2. Проблемы с удаленным бэкапом:

  • Проверьте SSH соединение
  • Проверьте права доступа к удаленному серверу
  • Проверьте настройки rsync

3. Проблемы с восстановлением:

  • Проверьте целостность архивов
  • Проверьте права доступа к файлам
  • Проверьте совместимость версий

Диагностика

1. Проверка статуса cron: sudo systemctl status cron

2. Проверка логов бэкапа: tail -f /var/log/minecraft-backup.log

3. Проверка размера бэкапов: du -sh /backup/minecraft

4. Проверка расписания cron: sudo crontab -l

5. Тестирование скриптов: sudo /usr/local/bin/minecraft-backup.sh

Заключение

Автоматические бэкапы Minecraft сервера успешно настроены! Теперь у вас есть надежная система резервного копирования с возможностями полных, инкрементальных и удаленных бэкапов.

Для размещения ваших Minecraft серверов с настроенными бэкапами на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой системы бэкапов и обеспечением безопасности ваших данных!