Периодический вайп (очистка мира) в Rust — фундаментальный процесс жизненного цикла любого игрового сервера. Регулярный сброс карты устраняет накопившиеся постройки игроков, снижает нагрузку на процессор и диск, а также возвращает равные условия для выживания. Ручной перезапуск с очисткой файлов отнимает время администратора и чреват случайным удалением чертежей или прав доступа.
В этом материале рассматривается различие между вайпом карты и полным сбросом чертежей, структура каталога server.identity, написание отказоустойчивого Bash-скрипта вайпа с ротацией сида и настройка расписания в cron.
Разница между обычным вайпом карты и полным вайпом чертежей#
В сообществе Rust принято разделять два типа очистки:
- Map Wipe (вайп карты): Удаляются только физические структуры, базы игроков и сохранённый ландшафт. Изученные чертежи (blueprints) у игроков сохраняются. Проводится обычно раз в неделю или две недели.
- Full Wipe / BP Wipe (полный вайп чертежей): Удаляется карта, а также все базы данных изученных рецептов, инвентари и токены игроков. Обязателен в первый четверг каждого месяца при выходе глобального обновления Facepunch.
Ошибочное удаление файлов чертежей в день обычного вайпа карты приводит к оттоку постоянных игроков, поэтому скрипт обязан четко разграничивать эти режимы.
Структура каталога identity и важные файлы базы данных#
Все динамические данные сервера Rust хранятся по пути /opt/rust/server/<server.identity>/:
proceduralmap.<size>.<seed>.<version>.sav: файл карты и всех построек игроков (удаляется при вайпе карты).player.blueprints.<version>.db: база данных изученных игроками чертежей (удаляется только при полном вайпе).player.identities.<version>.dbиplayer.tokens.db: привязка учетных записей Steam (удаляются при полном вайпе).player.stats.<version>.db: статистика игроков.cfg/server.cfg: постоянные настройки сервера (сохраняются всегда).cfg/bans.cfgиcfg/users.cfg: списки забаненных игроков и администраторов (сохраняются всегда).
Bash-скрипт автоматизации вайпа со сменой сида#
Создадим скрипт /opt/rust/scripts/wipe.sh, поддерживающий два режима: map и full. Скрипт оповещает игроков по RCON, делает резервную копию, генерирует случайный сид карты и перезапускает службу:
sudo mkdir -p /opt/rust/scripts /opt/rust/backups
sudo nano /opt/rust/scripts/wipe.sh
Вставьте следующий скрипт:
#!/usr/bin/env bash
set -euo pipefail
MODE="${1:-map}"
IDENTITY="my_rust_server"
SERVER_DIR="/opt/rust/server/${IDENTITY}"
BACKUP_DIR="/opt/rust/backups/wipe_$(date +%Y%m%d_%H%M%S)"
echo "[1/6] Sending RCON broadcast..."
rcon -a 127.0.0.1:28016 -p "SuperSecretRconPass" "say Automated wipe starting in 60 seconds!" || true
sleep 60
rcon -a 127.0.0.1:28016 -p "SuperSecretRconPass" "server.save" || true
echo "[2/6] Stopping Rust server..."
systemctl stop rust
echo "[3/6] Archiving existing identity folder..."
mkdir -p "$BACKUP_DIR"
tar -czf "${BACKUP_DIR}/pre_wipe_archive.tar.gz" -C "/opt/rust/server" "${IDENTITY}"
echo "[4/6] Cleaning up data files according to mode: ${MODE}..."
find "$SERVER_DIR" -maxdepth 1 -name "proceduralmap.*.sav" -delete
find "$SERVER_DIR" -maxdepth 1 -name "*.map" -delete
if [ "$MODE" = "full" ]; then
echo "Full wipe requested. Deleting blueprint and player databases..."
find "$SERVER_DIR" -maxdepth 1 -name "player.blueprints.*.db" -delete
find "$SERVER_DIR" -maxdepth 1 -name "player.identities.*.db" -delete
find "$SERVER_DIR" -maxdepth 1 -name "player.tokens.db" -delete
find "$SERVER_DIR" -maxdepth 1 -name "player.stats.*.db" -delete
fi
echo "[5/6] Generating new random seed..."
NEW_SEED=$(( (RANDOM << 16) | RANDOM ))
sed -i -E "s/(\+server\.seed )[0-9]+/\1${NEW_SEED}/" /etc/systemd/system/rust.service
echo "[6/6] Reloading systemd and starting Rust with seed ${NEW_SEED}..."
systemctl daemon-reload
systemctl start rust
echo "Wipe completed successfully. Seed: ${NEW_SEED}"
Сделайте скрипт исполняемым:
sudo chmod +x /opt/rust/scripts/wipe.sh
При использовании облачной панели управления серверами расписание вайпов, ротация сида процедурной генерации и сохранение чертежей автоматизированы через встроенный планировщик задач.
Планирование вайпа через cron и оповещение игроков по RCON#
Откройте системный планировщик crontab от имени суперпользователя:
sudo crontab -e
Настройте расписание:
- Обычный вайп карты каждый четверг в 19:00 UTC:
- Полный вайп в первый четверг месяца в 19:00 UTC:
0 19 * * 4 /opt/rust/scripts/wipe.sh map >> /var/log/rust_wipe.log 2>&1
Для ручного запуска вайпа в любой момент достаточно передать нужный аргумент:
sudo /opt/rust/scripts/wipe.sh map
Проверка генерации нового мира и валидация портов#
После старта службы отслеживайте журнал инициализации процедурной генерации карты:
sudo journalctl -u rust -f --no-pager
В выводе должны появиться сообщения о генерации новой карты:
Generating Procedural Map [<size>, <new_seed>]Spawning Monuments... DoneServer initialization complete. Map loaded.
Проверьте, что сервер успешно слушает игровой порт UDP 28015 и порт RCON 28016:
sudo ss -ulnp | grep 28015
sudo ss -tlnp | grep 28016




