Введение​

У Pterodactyl есть встроенный функционал создания резервных копий, который вполне неплохо справляется со своей задачей. Но резервные копии можно сделать размером меньше, настроив специальный файл - .pteroignore. Этот файл позволяет исключить часть файлов из резервной копии, позволяя Вам не помещать в резервную копию - ненужные файлы (карты и модели, например).

Включение резервных копий​

При создании сервера, можно отключить ему резервные копии. Для начала убедитесь, что в админке серверу разрешено иметь резервные копии:
1634060395271.png
Если в поле Backup Limit введено число, отличное от нуля, то всё хорошо - бэкапы должны быть доступны:
1634060502158.png
Чтобы убедиться в работоспособности этого функционала - можете просто зайти на вкладку и попробовать создать бэкап. Панель подумает и, спустя какое-то время, бэкап будет создан и доступен к скачиванию, и даже восстановлению из него. Но он будет включать все файлы, включая стандартные серверные, которые мы и так можем скачать через SteamCMD.
И здесь на сцену выходит .pteroignore.

.pteroignore

.pteroignore - файл, позволяющий исключать целые папки и файлы из бэкапа. Так же он позволяет наоборот, исключив целую директорию и/или перечень файлов/папок - включить обратно часть папки в бэкап.
Его синтаксис чем-то напоминает .gitignore, и действуют на него те же правила, что и на .gitignore при использовании в связке с Гитом:
  • Комментарии начинаются с знака решётки (#)
  • Пути в файле пишутся относительно расположения файла
  • Для исключения целой директории, путь к ней обязательно должен заканчиваться на слэш, иначе путь трактуется как "файл"
  • Возможно использовать маску (tf/*.vpk или tf/maps/vsh_*).
  • Для исключения папки/файла, путь должен начинаться с восклицательного знака (!tf/cfg/server.cfg)
  • Важно! Порядок записей в файле играет роль!
  • Код:
    csgo/materials/
    csgo/materials/models/player/custom_player/econ/head/ctm_diver/ctm_diver_fbi_v2_head_variantd_color.vt
    !csgo/materials/decals/
    !csgo/materials/models/
    !csgo/materials/paintball/
    Если заполнить файл таким образом, то файл .../ctm_diver_fbi_v2_head_variantd_color.vt всё равно попадёт в архив.
    Чтобы его не включало, нужно строчку с ним поместить под той, которая наиболее всего исключает нужную папку из игнора (т.е. под csgo/materials/models/
  • Код:
    csgo/materials/
    !csgo/materials/decals/
    !csgo/materials/models/
    csgo/materials/models/player/custom_player/econ/head/ctm_diver/ctm_diver_fbi_v2_head_variantd_color.vt
    !csgo/materials/paintball/
Создаём .pteroignore в корне, и начинаем составлять:
  1. В бэкапе сервера определенно не нужны стандартные папки движка: bin, hl2, platform и другие
  2. В папке мода (tf / cstrike / csgo) исключаем из копирования так же bin, все *.vpk-файлы и остальные не изменяемые Вами, как администратором, папки. Так же можно исключить модели/материалы/карты.
  3. Можно исключить временные файлы/папки плагинов и движка, такие как логи и аудио-кэши (*.cache).
  4. Если есть инвалид-клиенты (у которых не получается скачать файлы с FastDL), и отдача файлов самим сервером включена, можете так же исключить из резервной копии сжатые версии файлов самим движком. У них расширение .ztmp.
В итоге получаем файл вида:
Код:
# Папки в корне
.steam/
bin/
hl2/
platform/
Steam/
steamapps/
steamcmd/
core
debug.log
srcds_*
steam_appid.txt
thirdpartylegalnotices.txt

# Файлы в папке "игры"
tf/*.vpk
tf/*.cache
tf/*.txt
tf/steam.inf
tf/bin/
tf/cfg/
tf/custom/
tf/models/
tf/resource/
tf/workshop/

# Файлы с клиентов
tf/download/
tf/downloadlists/

# Итемсхемы
tf/scripts/

# Демки
tf/replay/
tf/addons/sourcemod/data/demos/

# Исключения в основной папке конфигов
!tf/cfg/sourcemod/
!tf/cfg/server.cfg

# Временные файлы - мусор
tf/addons/sourcemod/data/ad_chunk.bin
tf/addons/sourcemod/data/admin_cache_dump.txt

# Логи и прочий временный шлак - в мусорку
*.log
*.ztmp
*.tmp

# Карты - нужны, но не все; за исключением стандартных
tf/maps/
!tf/maps/vsh_*
!tf/maps/arena_*

# Так же, исключаем сам .pteroignore
.pteroignore

Бэкапы по расписанию

В Pterodactyl есть встроенный планировщик, который, помимо простого запуска/перезапуска/остановки сервера наравне с выполнением команд, умеет делать и резервные копии. Самый оптимальный вариант - создание бэкапа, когда сервер выключен, когда ни один файл не используется им.

Если у Вас есть задача на выполнение перезапуска сервера ночью - можно просто её привести к следующему виду:
1634063830682.png

Неудачное создание бэкапа по тем или иным причинам не должно мешать запуску сервера, потому обязательно пометьте её "разрешённой к неудачному завершению".
И учтите, что операция Create backup лишь создаёт задачу на демоне. Т.е. сразу после создания задачи, бэкап может ещё не создаться, а сервер уже пойдёт вставать. Потому добавьте ожидание после начала создания бэкапа. Продолжительность - на своё усмотрение. У меня бэкапы создаются за 50 секунд (снимается полная копия: вся папка addons, используемые карты, модели, материалы и звуки), но для запаса я запускаю сервер только через 3 минуты.