Бэкапы продают все. Гораздо меньше тех, кто скажет, где они хранятся, а это единственное, что решает, поможет ли бэкап в тот день, когда что-то пойдёт не так. Бэкап - это не архив, а копия, которую можно восстановить на рабочем железе, за приемлемое время и со всем, что нужно серверу, чтобы снова стать самим собой. Большинство того, что люди называют бэкапом, не проходит одну из этих четырёх проверок, чаще всего последнюю: база данных была отдельной службой, переменные запуска никогда не были файлами, а половина данных плагинов лежала в папке, которую никто не догадался включить.
Эта статья - о форме политики бэкапов для одного-двух серверов: что входит в бэкап, где лежат копии, как долго они живут и в каком порядке всё возвращается на место. Проверка, доказывающая, что всё это работает, - отдельная работа, она описана в статье проверка восстановления до того, как оно понадобится, а у баз данных свои правила в статье бэкапы и восстановление баз данных.
Что должно входить в бэкап#
Начните с вопроса: «если бы этот сервер прямо сейчас удалили, что мне понадобилось бы, чтобы воссоздать его в точности?» Ответ никогда не сводится к одному файлу сохранения.
| Нагрузка | Входит в архив | Находится в другом месте |
|---|---|---|
| Minecraft (Paper) | world/, world_nether/, world_the_end/, plugins/, server.properties, ops.json, whitelist.json, banned-players.json | Номер сборки Paper, версия Java, любой плагин, хранящий данные в базе данных |
| Valheim | worlds_local/ (.db и .fwl), adminlist.txt, bannedlist.txt, permittedlist.txt | Аргументы запуска, версии плагинов BepInEx |
| Игры на Source | cfg/, maps/, addons/, файл конфигурации сервера | Контент Workshop, который скачивается заново, токен игрового сервера |
| Приложение на Node или Python | Исходники или коммит для деплоя, .env, любой каталог uploads/ | node_modules, база данных, сам репозиторий |
| WordPress | wp-content/, wp-config.php, .htaccess | База данных, то есть большая часть сайта |
| Postgres или Mongo | Файл дампа | Роли и права, если их не выгружали отдельно |
Три категории теряются снова и снова.
- База данных. Это другая служба с другим механизмом бэкапа, а архив файлов работающей базы данных не является её бэкапом. Если ваш плагин прав для Minecraft, ваши ресурсы FiveM или ваше веб-приложение хранят состояние в базе данных, то архив без этой базы восстанавливает сервер, который запускается и ничего не помнит.
- Всё, что находится вне каталога сервера. Бэкапы панели архивируют собственные файлы сервера. Задача cron на VDS, пишущая в
/opt/tools, второй том или каталог логов, который вы перенесли ради места, в архив не попадут, пока вы сами их туда не положите. - Настройки, которые не являются файлами. Переменные запуска, выделенные порты, расписания, права субпользователей и тариф, на котором работает сервер, - всё это живёт в базе данных панели, а не на диске. Восстановленный архив возвращает правильный мир и неправильную команду запуска. Держите рядом с бэкапами простой текстовый файл со строкой запуска, выделенными портами и всем, что вы меняли относительно значений по умолчанию. Это две минуты, и это разница между восстановлением за двадцать минут и за два часа.
Информация о версиях тоже принадлежит этой заметке. Папка world/ из Minecraft 1.21.4, запущенная под 1.20, не загрузится, а сборка модов, восстановленная без точных версий модов, даёт то же падение, которое бэкап должен был отменить, - см. что делать, когда обновление мода всё ломает.
Где лежат копии#
Правило, пережившее все перемены в технологиях хранения, - 3-2-1: три копии данных, на двух разных видах хранилищ или систем, и одна из них там, где её нельзя уничтожить вместе с первыми двумя. Это не лозунг вендора, а признание того, что отказы приходят кластерами.
Применительно к одному хостируемому серверу это выглядит конкретно:
- Живые данные на узле, в которые прямо сейчас идёт запись. Это копия, а не бэкап.
- Бэкап, снятый вне машины, которую он защищает. Архив в том же пуле хранения, что и защищаемое, покрывает ровно один отказ: вы сами удалили свой мир. От диска, пула, машины или аккаунта он не защищает вовсе.
- Копия, которая у вас на руках. Скачанная на ваш собственный диск или отправленная в хранилище, никак не связанное с вашим хостингом. Это та копия, которая переживёт исчезновение вашего аккаунта, и именно её почти ни у кого нет.
Пунктирная часть плана у большинства людей - стрелка от архива к тестовому серверу. Архив, который по этой стрелке никогда не ходил, - это файл с говорящим названием.
Хранение: сколько, как старых и какой из них заблокирован#
Срок хранения - это вопрос о том, какой ошибки вы ждёте. Бэкапы за последний день ловят падение или неудачное обновление. Бэкапы трёхнедельной давности ловят то, чего никто не заметил: плагин, который тихо портил инвентари игроков, грифера с записью в ops, таблицу, потерявшую строки во вторник.
Классическая схема - дед-отец-сын: семь ежедневных бэкапов, четыре еженедельных и несколько ежемесячных. В игровом тарифе с двумя слотами так не получится, поэтому применяйте честную малую версию:
- Слот 1 ротируется. Ночной бэкап, который перезаписывает вчерашний. Это ваша страховка от падений.
- Слот 2 заблокирован и хранит последнее заведомо рабочее состояние: бэкап, снятый перед последним обновлением, перед последним изменением модов или после последней успешной проверки восстановления. Обновляйте его осознанно, а не по расписанию.
- Ваша собственная копия - это глубина. Раз в неделю скачивайте ротируемый бэкап и храните четыре штуки. Место на вашем компьютере намного дешевле слота, а история за четыре недели стоит вам одного перетаскивания в неделю.
В RE:NODE в игровых тарифах два слота для бэкапов, в линейках приложений, веба и баз данных - от двух до шести в зависимости от уровня, а в линейке VDS - один. Слоты есть у каждого тарифа: ничто здесь не зависит от цены. Бэкапы делаются по требованию или по расписанию, восстанавливаются кнопкой, а не тикетом, скачиваются и блокируются от ротации. Где лежат копии вне машины, мы не публикуем, и именно поэтому пункт 3 выше - ваша работа, а не наша.
Согласованность: разница между копией и снимком#
Большинство игровых серверов держат мир в памяти и периодически записывают его. Если архивировать эти файлы в момент записи, получится смесь двух состояний, а отказ неприятен тем, что архив выглядит нормально: правильный размер, правильные имена файлов и мир, который отказывается загружаться или загружается с дырой.
Три выхода, в порядке предпочтения:
- Остановите сервер, сделайте бэкап, запустите. Идеальная согласованность ценой нескольких минут простоя. Для небольшой группы это верный ответ, и в 05:00 никто этого не замечает.
- Сначала сбросьте на диск. Minecraft можно сказать перестать писать, а затем записать всё на диск:
save-off, затемsave-all flush, снимите бэкап, затемsave-on. У Palworld и Project Zomboid есть консольные командыSaveиsaveсоответственно. В 7 Days to Die естьsaveworld. - Примите риск для по-настоящему append-only данных. Логи, загруженные медиафайлы, статические ресурсы. Ничего, что процесс держит открытым и перезаписывает.
Valheim заслуживает отдельной строки, потому что часто страдает именно он: чистая остановка сохраняет мир, принудительное завершение - нет, а -saveinterval по умолчанию равен 1800 секундам. Бэкап работающего сервера Valheim может заархивировать мир, отстающий от игры на полчаса. Как сократить этот интервал, описано в руководстве по выделенному серверу Valheim.
Порядок этих шагов на таймере - тема статьи задачи по расписанию, которые стоит завести: коротко, команда сброса на диск выполняется за несколько минут до задачи бэкапа, а не в ту же минуту, а ночной перезапуск идёт после архива, а не рядом с ним, по причинам, изложенным в статье расписания перезапуска, которые помогают.
Как сделать бэкап вручную#
Рано или поздно вам придётся: перед рискованным изменением, перед миграцией или потому, что нужна копия, которая не в руках вашего хостера. Через SFTP или файловый менеджер папки можно скачать напрямую, но сначала собрать архив на стороне сервера быстрее, и потом есть что проверять контрольной суммой.
$ cd /home/container$ tar -czf /home/container/backup-$(date +%F).tar.gz \ world world_nether world_the_end plugins server.properties ops.json$ sha256sum backup-$(date +%F).tar.gz > backup-$(date +%F).sha256Затем проверьте, прежде чем довериться, и ещё раз после скачивания:
$ gzip -t backup-2026-09-21.tar.gz && echo "archive intact"$ tar -tzf backup-2026-09-21.tar.gz | wc -l$ sha256sum -c backup-2026-09-21.sha256Каждый раз стоит записывать три числа: число файлов, размер в байтах и то, сколько времени заняла сборка архива. Бэкап, внезапно оказавшийся на 90% меньше прошлонедельного, - самое надёжное раннее предупреждение, и увидеть его можно, только если вы когда-либо смотрели на прошлонедельный. gzip -t ловит оборванную загрузку - другой частый сюрприз: архив в 4 GB, остановившийся на 3,1 GB, потому что закрыли вкладку браузера.
Помните, что в архиве лежат ваши секреты. Вместе с ним путешествуют wp-config.php, .env, пароли RCON и учётные данные баз данных. Обращайтесь со скачанным бэкапом так же, как с самим сервером, и прочтите статью переменные окружения и секреты, если что-то из этого сейчас лежит в файле, который вы кому-нибудь отправляли по почте.
Восстановление без ухудшения ситуации#
Инстинкт во время инцидента - немедленно восстанавливать поверх. Удержитесь на шестьдесят секунд, потому что сломанное состояние - это улика, и она вот-вот будет уничтожена.
- Остановите сервер. Не перезапустите, а остановите. Работающий процесс будет писать поверх всего, что вы положите на место.
- Сделайте бэкап сломанного состояния или хотя бы скачайте затронутую папку. Если восстановленная копия окажется старше, чем вы думали, это единственный путь назад к версии с сегодняшней работой.
- Восстанавливайте не в продакшен, если у вас есть сомнения, какой бэкап правильный. Восстановление на второй сервер стоит час небольшого тарифа и снимает необходимость гадать.
- Сначала файлы, потом база данных, и проверьте, что версия схемы, которую ждёт приложение, совпадает с восстановленным кодом. База данных новее файлов - самый неприятный случай: см. миграции без простоя.
- Заново примените настройки на стороне панели из вашей заметки - переменные запуска, порты, расписания.
- Запустите и проверьте что-то конкретное. Не «загрузилось», а: войдите, откройте то, что ломалось, проверьте последнее изменение, которое вы помните перед запуском бэкапа.
Пять способов, которыми бэкап оказывается не бэкапом#
- Он лежит на том же диске. Собственные скользящие сохранения игры, папка
backups/рядом с миром, копия в/home/container/old. Все они переживают ровно те ошибки, которые вы делаете в файловом менеджере, и ни одну из тех, что делает железо. - В нём нет базы данных. Об этом сказано выше, и именно это объясняет больше неудачных восстановлений, чем все остальные причины вместе взятые, на нагрузках приложений и веба.
- Он выполнился, но на пустом месте. Расписание, которое делает бэкап сервера, получившего другое имя, или команда дампа, у которой изменилось имя базы данных, каждую ночь порождает маленький архив. Следите за размером.
- Его нельзя прочитать. Оборванные загрузки, архив, собранный при заполненном диске, повреждённый поток gzip. Контрольная сумма при создании и контрольная сумма после передачи ничего не стоят.
- Никто не знает процедуру. Архив идеален, а тот, кто всё настроил, спит. Запишите шаги восстановления в ту же заметку, что и переменные запуска.
Бэкап, который никто не восстанавливал, - это гипотеза. Время от времени восстанавливайте один на тестовый сервер: это занимает полчаса и остаётся единственным способом узнать.
Как подобрать расписание под то, что вы готовы потерять#
Любую политику бэкапов описывают два числа, и когда они названы, большинство споров прекращается. Recovery point objective - сколько работы вы готовы потерять, то есть интервал между бэкапами. Recovery time objective - сколько времени вы готовы простоять, пока всё возвращаете на место.
| Нагрузка | Разумный RPO | Разумный RTO | Почему |
|---|---|---|---|
| Небольшой сервер выживания, друзья | 24 часа | 1 час | День стройки - досадно, но не смертельно |
| Загруженный игровой сервер сообщества | 6 часов | 30 минут | Прогресс игроков и покупки в магазине |
| Веб-приложение или магазин | 1 час или меньше | 30 минут | Заказы, записанные между бэкапами, пропадают |
| База данных за приложением | Минуты, если нужно | Зависит от размера | Нужны дампы плюс журнал упреждающей записи, а не одни дампы |
| Сервер для разработки или тестов | Раз в неделю | Когда угодно | Дёшево пересобрать из репозитория |
Строка, на которой попадаются, - последняя настоящая. Если потеря часа записей в базу данных недопустима, ночные дампы её не решат, каким бы ни был срок хранения, и вам нужна непрерывная архивация на инфраструктуре, которую вы контролируете, - а это обычно VDS, а не слот. Для всего остального ночной бэкап плюс заблокированная заведомо рабочая копия плюс еженедельная загрузка - это полная политика, и она достижима на самом маленьком из продаваемых тарифов.
FAQ#
Как часто делать бэкап игрового сервера?
Каждую ночь, в самый тихий час, плюс один вручную непосредственно перед любым обновлением, изменением модов или экспериментом с конфигурацией. Ручные важнее расписания: большинство восстановлений происходит из-за изменения, которое кто-то сделал, а не из-за отказа.
Включает ли бэкап мою базу данных?
Нет, если вы не положили её дамп в папку сервера до запуска бэкапа. Бэкапы панели архивируют файлы сервера. База данных - слот базы данных в панели или отдельный сервер PostgreSQL или MongoDB - это другая служба, и ей нужен собственный дамп, поэтому в порядке расписания из этой статьи дамп идёт первым.
Заблокированный бэкап безопасен навсегда?
Он защищён от ротации, но не от удаления. Блокировка не даёт запланированному бэкапу вытеснить вашу заведомо рабочую копию из слотов. Она не переживает удаление сервера и не заменяет вашу собственную скачанную копию.
Сколько занимает восстановление?
Достаточно долго, чтобы это стоило измерить, а не предполагать. Восстановление игрового сервера на 500 MB из бэкапа панели - несколько минут; сервер с модами на 40 GB с базой данных - целый вечер. Единственный честный ответ - число, которое вы получили в прошлый раз, когда пробовали, и поэтому попробовать стоит.
Можно ли восстановить бэкап на другой сервер?
Да, и это самый безопасный способ его проверить. Скачайте архив, загрузите его на второй сервер на том же или большем тарифе и запустите там. Так же вы переезжаете между тарифами или хостерами - сторона DNS и игроков разобрана в статье как переехать, не потеряв игроков.
А что насчёт бэкапа всей платформы, а не только моего сервера?
Это задача хостера, и она отдельна от вашей. Наши бэкапы ежедневные, копируются на отдельное железо, проверяются и очищаются по расписанию. Они защищают платформу, а не ваши решения: мир, который вы удалили вчера, из них не восстановить, - для этого и существуют ваши собственные слоты для бэкапов.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.