Как восстановить сервер из резервной копии

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

  1. Откройте браузер и перейдите в панель proxify.cloud по адресу, указанному в письме с данными от сервера (обычно https://panel.proxify.cloud или IP-адрес ноды с портом 8006).
  2. Авторизуйтесь, используя логин root и пароль от выделенного сервера.
  3. В левом дереве ресурсов выберите ваш узел (Node) — он назван по хостнейму сервера, например mx-host-01.
  4. Найдите контейнер (CT) или виртуальную машину (VM), где развернут Minecraft-сервер. Обычно это LXC-контейнер с ID 100, 101 и т.д. Нажмите на него левой кнопкой мыши.
  5. Убедитесь, что статус контейнера — Running. Если остановлен — нажмите кнопку Start в верхней панели и дождитесь загрузки (статус сменится на зеленый).

Подключение к контейнеру через консоль Proxmox

  1. В меню выбранного контейнера перейдите во вкладку Console (Консоль). Откроется терминал с уже авторизованным пользователем root.
  2. Проверьте, что вы внутри нужного окружения, командой:
    hostname
    
    Должен вернуть имя контейнера (например, mc-server-1).
  3. Определите пользователя, от имени которого запускается сервер. Чаще всего это minecraft или ubuntu. Посмотрите домашние директории:
    ls -la /home/
    
    Пример вывода:
    drwxr-xr-x 5 minecraft minecraft 4096 May 10 12:00 minecraft
    drwxr-xr-x 3 ubuntu    ubuntu    4096 May 01 10:00 ubuntu
    

Остановка игрового сервера перед восстановлением

  1. Критически важно: никогда не восстанавливайте файлы на работающем сервере — это приведет к коррупции мира и плагинов.
    • Если используется systemd-сервис (стандарт для proxify.cloud образов):
      systemctl stop minecraft
      
    • Если сервер запущен в screen/tmux вручную:
      su - minecraft -c "screen -S mc -X stuff 'stop\n'"
      sleep 10
      
    • Проверьте, что процесс Java остановился:
      pgrep -af java
      
      Вывод должен быть пустым.

Локализация резервных копий

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

    • Внутренние снапшоты Proxmox (уровень диска) — вкладка Backup в панели контейнера.
    • Файловые бэкапы скриптов (уровень файлов) — обычно в /var/backups/minecraft или /home/minecraft/backups.
  2. Проверьте наличие файловых бэкапов:

    ls -lh /var/backups/minecraft/
    # или
    ls -lh /home/minecraft/backups/
    

    Типовая структура имен: mc-backup-2024-05-20_03-00-01.tar.gz (дата в имени).

  3. Если файловых бэкапов нет — используйте снапшоты Proxmox (см. раздел «Восстановление через снапшот Proxmox» ниже).

Восстановление из файлового архива (tar.gz)

  1. Перейдите в директорию сервера (где лежат server.jar, папки world, plugins, mods):

    cd /home/minecraft/server
    # или
    cd /opt/minecraft/server
    

    Уточните путь командой pwd после su - minecraft.

  2. Создайте безопасную копию текущего состояния на случай неудачи:

    tar -czf /tmp/pre-restore-$(date +%F_%H-%M).tar.gz .
    
  3. Распакуйте нужный бэкап поверх текущих файлов с сохранением прав и симлинков:

    tar -xzf /var/backups/minecraft/mc-backup-2024-05-20_03-00-01.tar.gz -C /home/minecraft/server --overwrite
    
    • Флаг -C задает целевую директорию.
    • --overwrite заменяет существующие файлы.
    • Если архив содержит корневую папку server/ внутри, добавьте --strip-components=1.
  4. Исправьте владельца файлов (важно, если распаковывали от root):

    chown -R minecraft:minecraft /home/minecraft/server
    
  5. Проверьте целостность ключевых файлов:

    ls -lh /home/minecraft/server/server.jar
    ls -ld /home/minecraft/server/world
    ls -lh /home/minecraft/server/plugins/ 2>/dev/null | head -5
    

Восстановление через снапшот Proxmox (полный откат диска)

  1. Если файловых бэкапов нет или они повреждены, используйте снапшоты уровня блока в панели proxify.cloud:

    • В интерфейсе панели выберите контейнер → вкладка Snapshots.
    • Выберите нужный снапшот по дате (колонка Created).
    • Нажмите кнопку Rollback (Откатить).
    • В диалоге подтверждения поставьте галочку Include RAM только если снапшот делался на запущенном сервере и вы хотите восстановить состояние памяти (редко нужно для Minecraft). Обычно галочка не ставится.
    • Нажмите Yes. Процесс займет 10–60 секунд в зависимости от размера диска.
  2. После отката контейнер автоматически перезагрузится. Дождитесь статуса Running в панели.

  3. Зайдите в консоль и проверьте, что сервер не запустился автоматически (systemd может попытаться стартовать):

    systemctl status minecraft
    

    Если статус active (running) — остановите его:

    systemctl stop minecraft
    

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

  1. Войдите под пользователем сервера и проверьте версию ядра/плагинов:

    su - minecraft
    cd /home/minecraft/server
    java -jar server.jar --version 2>&1 | head -3
    
  2. Запустите сервер в тестовом режиме (без systemd) для проверки логов:

    screen -S test-restore
    java -Xms2G -Xmx4G -jar server.jar nogui
    

    Дождитесь строки Done (X.Xs)! For help, type "help" или ошибок в консоли.

  3. Если ошибок нет — нажмите Ctrl+A, затем D для отсоединения от screen. Остановите тестовый процесс:

    screen -S test-restore -X stuff 'stop\n'
    sleep 5
    
  4. Запустите продакшн-сервис через systemd:

    exit  # вернемся к root
    systemctl start minecraft
    systemctl status minecraft --no-pager
    
  5. Проверьте доступность порта (по умолчанию 25565):

    ss -tlnp | grep 25565
    # или
    nc -zv localhost 25565
    
  6. Зайдите в игру и проверьте: чанки грузятся, инвентарь на месте, плагины/моды отвечают командами (/plugins, /mods, /version).

Пост-действия и чистка

  1. Удалите временный бэкап текущего состояния, если всё ок:

    rm -f /tmp/pre-restore-*.tar.gz
    
  2. В панели proxify.cloud создайте новый снапшот «чистого» состояния после восстановления:

    • Вкладка SnapshotsTake Snapshot.
    • Имя: post-restore-2024-05-20, описание: Restored from backup 2024-05-20_03-00.
  3. Настройте/проверьте автоматическое резервное копирование в /etc/cron.d/minecraft-backup или через панель proxify.cloudBackup Jobs (если настроено на уровне ноды).


Возможные проблемы и решения

Проблема Причина Решение
tar: Cannot open: No such file or directory Неправильный путь к архиву или архив поврежден. Проверьте ls -lh /путь/к/архиву. Скачайте свежий бэкап из S3/локального хранилища proxify.cloud.
Permission denied при запуске / чтении world Файлы распакованы от root, владелец не сменен. Выполните chown -R minecraft:minecraft /home/minecraft/server от root.
Сервер запускается, но сразу крашится: java.lang.OutOfMemoryError В systemd юните или скрипте запуска старые флаги -Xmx не подходят для восстановленного мира (больше чанков). Отредактируйте /etc/systemd/system/minecraft.service или старт-скрипт: увеличьте -Xmx (например, -Xmx6G). Затем systemctl daemon-reload && systemctl restart minecraft.
Мир пустой / спавн сломан / чанки битые Восстановлен не тот бэкап или архив не полный (пропущена папка world/region). 1. Остановите сервер. 2. Удалите папки world, world_nether, world_the_end. 3. Распакуйте бэкап заново с флагом -v для контроля списка файлов.
Плагины/моды не загружаются (Could not load 'plugins/...jar') Несовместимость версий: бэкап сделан на другой версии ядра (Paper/Spigot/Fabric/Forge). Проверьте версию server.jar (java -jar server.jar --version). Скачайте совместимую версию ядра и замените файл, либо откатите плагины/моды к версии из бэкапа.
Rollback снапшота в Proxmox висит бесконечно Блокировка диска или проблема с хранилищем (ZFS/LVM-thin). В консоли хоста (не контейнера) выполните qm unlock <CTID> или pct unlock <CTID>. Повторите Rollback. Если ZFS — проверьте zpool status.
После отката снапшота сеть не поднимается MAC-адрес виртуального интерфейса сменился, DHCP