Как откатить сервер на предыдущую версию

Подготовка и доступ к панели управления

  1. Авторизуйтесь в панели proxify.cloud по адресу https://panel.proxify.cloud или через личный кабинет на сайте хостинга.
  2. В списке серверов выберите нужный выделенный сервер (Dedicated Server) с установленной Ubuntu.
  3. Перейдите во вкладку Console (Консоль) или VNC для получения прямого доступа к командной строке ОС. Если у вас настроен SSH-доступ, подключитесь через терминал:
    ssh root@<IP_ВАШЕГО_СЕРВЕРА>
    
    Замените <IP_ВАШЕГО_СЕРВЕРА> на реальный IPv4-адрес, указанный в панели proxify.cloud.

Остановка игрового сервера

  1. Определите, как запущен сервер: через systemd, screen/tmux или Docker.

    • Если используется systemd (стандарт для Ubuntu на proxify.cloud):
      systemctl stop minecraft-server
      
      Имя юнита (minecraft-server) может отличаться. Проверьте список:
      systemctl list-units --type=service | grep -i mine
      
    • Если сервер работает в screen:
      screen -S mc -X stuff "stop$(printf '\r')"
      sleep 10
      screen -S mc -X quit
      
    • Если используется Docker (образ itzg/minecraft-server):
      docker stop mc-server
      
      Узнайте имя контейнера: docker ps -a.
  2. Убедитесь, что процесс Java полностью завершен:

    pgrep -f "minecraft_server\|paper\|purpur\|fabric\|forge"
    

    Если PID остались — завершите принудительно: kill -9 <PID>.

Определение структуры бэкапов

  1. Стандартные пути хранения бэкапов на выделенных серверах proxify.cloud:

    • /var/backups/minecraft/ — если настраивали через панель или скрипты хостинга.
    • /opt/minecraft/backups/ — частый вариант для ручных установок.
    • /home/minecraft/backups/ — если сервер запущен от пользователя minecraft.
    • /root/backups/ — при запуске от root.
  2. Проверьте содержимое наиболее вероятной директории:

    ls -la /var/backups/minecraft/
    ls -la /opt/minecraft/backups/
    ls -la /home/minecraft/backups/
    

    Ожидаемые форматы архивов: .tar.gz, .tgz, .zip или папки с датами (например, 2024-05-20_03-00-00/).

  3. Если бэкапы создаются скриптом (например, backup.sh), просмотрите его конфигурацию:

    cat /opt/minecraft/backup.sh | grep -E "BACKUP_DIR|DESTINATION|TARGET"
    

Выбор точки восстановления

  1. Выберите нужный бэкап по дате/времени. Пример списка:

    world_2024-05-20_03-00-00.tar.gz
    world_2024-05-19_03-00-00.tar.gz
    world_2024-05-18_03-00-00.tar.gz
    full_server_2024-05-20_03-00-00.tar.gz
    
    • world_* — только игровые миры.
    • full_server_* — полная копия: миры, плагины, моды, конфиги, server.jar.
  2. Для точного отката версии ядра (Paper, Purpur, Forge, Fabric) лучше использовать полный бэкап (full_server_*). Если нужно вернуть только карту — достаточно world_*.

Создание страховой копии текущего состояния

  1. Перед распаковкой старого бэкапа сохраните текущую версию на случай ошибки:
    TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
    mkdir -p /var/backups/minecraft/pre_rollback_${TIMESTAMP}
    cp -r /opt/minecraft/server /var/backups/minecraft/pre_rollback_${TIMESTAMP}/
    
    Путь /opt/minecraft/server замените на вашу рабочую директорию сервера (где лежит server.jar, папки world, plugins, mods).

Распаковка выбранного бэкапа

Вариант А: Полный откат (full_server_*.tar.gz)

  1. Перейдите в директорию сервера и распакуйте архив с перезаписью:

    cd /opt/minecraft/server
    tar -xzvf /var/backups/minecraft/full_server_2024-05-19_03-00-00.tar.gz --overwrite
    

    Флаг --overwrite (или -k для сохранения, но нам нужна замена) гарантирует восстановление старых конфигов и ядра.

  2. Если архив содержит корневую папку (например, server/ внутри архива), распакуйте во временную папку и перенесите:

    mkdir -p /tmp/restore
    tar -xzvf /var/backups/minecraft/full_server_2024-05-19_03-00-00.tar.gz -C /tmp/restore
    rsync -a --delete /tmp/restore/server/ /opt/minecraft/server/
    rm -rf /tmp/restore
    

Вариант Б: Откат только миров (world_*.tar.gz)

  1. Остановите сервер (шаг 4). Удалите или переименуйте текущие папки миров:

    cd /opt/minecraft/server
    mv world world_old_${TIMESTAMP}
    mv world_nether world_nether_old_${TIMESTAMP}
    mv world_the_end world_the_end_old_${TIMESTAMP}
    
  2. Распакуйте миры из бэкапа:

    tar -xzvf /var/backups/minecraft/world_2024-05-19_03-00-00.tar.gz
    

    Убедитесь, что в архиве лежат именно папки world, world_nether, world_the_end.

Вариант В: Бэкап в формате ZIP

  1. Установите unzip, если отсутствует:
    apt update && apt install -y unzip
    
    Распакуйте:
    cd /opt/minecraft/server
    unzip -o /var/backups/minecraft/full_server_2024-05-19_03-00-00.zip
    

Исправление прав доступа

  1. После распаковки от root владельцем файлов становится root. Верните права пользователю сервера (обычно minecraft или ubuntu):

    chown -R minecraft:minecraft /opt/minecraft/server
    

    Узнайте пользователя:

    ps aux | grep java | grep -v grep | awk '{print $1}' | head -1
    

    Если сервер запускался от root (не рекомендуется), пропустите этот шаг.

  2. Выставьте права на исполнение для скриптов запуска и ядра:

    chmod +x /opt/minecraft/server/start.sh
    chmod +x /opt/minecraft/server/server.jar
    

Проверка конфигураций после отката

  1. Откройте server.properties и проверьте версию протокола/версию игры, если откатывались на старую версию ядра:

    cat /opt/minecraft/server/server.properties | grep -E "level-name|server-port|online-mode|version"
    

    Убедитесь, что level-name=world совпадает с восстановленной папкой.

  2. Проверьте spigot.yml, paper-global.yml, bukkit.yml на предмет настроек, которые могли измениться между версиями (например, entity-activation-range, chunk-gc).

  3. Если откатили версию ядра (например, с Paper 1.20.4 на 1.20.1), обязательно проверьте совместимость плагинов/модов. Старые плагины могут не запуститься на новом ядре и наоборот. При необходимости замените plugins/ или mods/ на версии из бэкапа (они уже восстановлены при полном откате).

Запуск сервера и проверка

  1. Запустите сервер стандартным способом:

    • Systemd:
      systemctl start minecraft-server
      journalctl -u minecraft-server -f
      
    • Screen (от пользователя minecraft):
      su - minecraft -c "cd /opt/minecraft/server && screen -dmS mc ./start.sh"
      screen -r mc
      
    • Docker:
      docker start mc-server
      docker logs -f mc-server
      
  2. Дождитесь сообщения Done (X.Xs)! For help, type "help" в логах.

  3. Подключитесь к серверу через клиент Minecraft (IP из панели proxify.cloud) и проверьте:

    • Чанки грузятся без ошибок.
    • Инвентарь, эндер-сундук, позиция игрока соответствуют дате бэкапа.
    • Плагины/моды загрузились: /plugins или /mods в чате.
    • Нет ошибок [ERROR] в консоли.

Работа с базой данных (если применимо)

  1. Если сервер использует MySQL/MariaDB или PostgreSQL для плагинов (LuckPerms, CoreProtect, GriefPrevention, Dynmap), откат файлов мира не откатит БД.
    • Найдите дамп БД в бэкапах (обычно database_2024-05-19.sql.gz).
    • Восстановите:
      # MySQL/MariaDB
      gunzip < /var/backups/minecraft/database_2024-05-19.sql.gz | mysql -u minecraft_user -p minecraft_db
      
      # PostgreSQL
      gunzip < /var/backups/minecraft/database_2024-05-19.sql.gz | psql -U minecraft_user -d minecraft_db
      
    • Если дампа нет — откат невозможен без потери данных плагинов. Рассмотрите использование CoreProtect (/co rollback) для локальных исправлений.

Автоматизация на будущее (рекомендация)

  1. Настройте регулярные бэкапы через панель proxify.cloud (раздел "Backups" / "Резервное копирование") или cron:
    crontab -e -u minecraft
    
    Добавьте строку (ежедневно в 03:00):
    0 3 * * * /opt/minecraft/backup.sh >> /var/log/minecraft_backup.log 2>&1
    
    Пример /opt/minecraft/backup.sh:
    #!/bin/bash
    SRC="/opt/minecraft/server"
    DEST="/var/backups/minecraft"
    DATE=$(date +"%Y-%m-%d_%H-%M-%S")
    mkdir -