Найти в Дзене

«Резервное копирование мира Minecraft: автоматизация через cron и rsync».

Разберём пошаговую настройку автоматического резервного копирования мира Minecraft с использованием cron и rsync. Создайте папку для бэкапов: bash sudo mkdir -p /backup/minecraft/worlds Установите владельца (замените minecraft на пользователя, от которого запущен сервер): bash sudo chown -R minecraft:minecraft /backup/minecraft bash sudo nano /usr/local/bin/minecraft-backup.sh bash #!/bin/bash
# Настройки
SERVER_DIR="/opt/minecraft/server" # путь к серверу Minecraft
BACKUP_DIR="/backup/minecraft/worlds" # папка для бэкапов
WORLD_NAME="world" # название мира (может быть world, world_nether, world_the_end)
DATE=$(date +%Y%m%d_%H%M%S) # временная метка
BACKUP_FILE="$BACKUP_DIR/$WORLD_NAME-$DATE.tar.gz"
# Остановка сервера (опционально, но рекомендуется)
echo "Останов сервера для бэкапа..."
screen -S minecraft -p 0 -X stuff "say Резервное копирование...^M"
sleep 5
screen -S minecraft -p 0 -X stuff "stop^M"
sleep 30 # ожидание завершения сохранения
# Создание архива мира
echo "Созда
Оглавление

Разберём пошаговую настройку автоматического резервного копирования мира Minecraft с использованием cron и rsync.

Шаг 1. Подготовка директорий

Создайте папку для бэкапов:

bash

sudo mkdir -p /backup/minecraft/worlds

Установите владельца (замените minecraft на пользователя, от которого запущен сервер):

bash

sudo chown -R minecraft:minecraft /backup/minecraft

Шаг 2. Создание скрипта бэкапа

  1. Создайте скрипт:

bash

sudo nano /usr/local/bin/minecraft-backup.sh

  1. Вставьте код:

bash

#!/bin/bash

# Настройки
SERVER_DIR="/opt/minecraft/server" # путь к серверу Minecraft
BACKUP_DIR="/backup/minecraft/worlds" # папка для бэкапов
WORLD_NAME="world" # название мира (может быть world, world_nether, world_the_end)
DATE=$(date +%Y%m%d_%H%M%S) # временная метка
BACKUP_FILE="$BACKUP_DIR/$WORLD_NAME-$DATE.tar.gz"

# Остановка сервера (опционально, но рекомендуется)
echo "Останов сервера для бэкапа..."
screen -S minecraft -p 0 -X stuff "say Резервное копирование...^M"
sleep 5
screen -S minecraft -p 0 -X stuff "stop^M"
sleep 30 # ожидание завершения сохранения

# Создание архива мира
echo "Создание бэкапа мира $WORLD_NAME..."
tar -czf "$BACKUP_FILE" -C "$SERVER_DIR" "$WORLD_NAME"

# Запуск сервера
echo "Запуск сервера..."
cd "$SERVER_DIR" && screen -dmS minecraft java -Xmx4G -jar server.jar nogui

# Уведомление в чат
sleep 10
screen -S minecraft -p 0 -X stuff "say Бэкап завершён: $DATE^M"

echo "Бэкап сохранён: $BACKUP_FILE"

  1. Сделайте скрипт исполняемым:

bash

sudo chmod +x /usr/local/bin/minecraft-backup.sh

Шаг 3. Настройка ротации бэкапов

Чтобы не заполнять диск старыми копиями, создайте скрипт ротации:

bash

sudo nano /usr/local/bin/backup-rotation.sh

Добавьте код:

bash

#!/bin/bash
BACKUP_DIR="/backup/minecraft/worlds"
RETENTION_DAYS=7 # хранить бэкапы 7 дней

# Удаление старых бэкапов
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete

echo "Ротация бэкапов завершена: $(date)"

Сделайте скрипт исполняемым:

bash

sudo chmod +x /usr/local/bin/backup-rotation.sh

Шаг 4. Использование rsync для инкрементальных копий

Если хотите экономить место и время, используйте rsync вместо полного архива каждый раз.

  1. Создайте скрипт инкрементального бэкапа:

bash

sudo nano /usr/local/bin/minecraft-incremental-backup.sh

  1. Добавьте код:

bash

#!/bin/bash
SERVER_DIR="/opt/minecraft/server"
SNAPSHOT_DIR="/backup/minecraft/snapshots"
WORLD_NAME="world"
DATE=$(date +%Y%m%d)

# Создание снапшота мира
rsync -av --delete \
--link-dest="$SNAPSHOT_DIR/latest" \
"$SERVER_DIR/$WORLD_NAME/" \
"$SNAPSHOT_DIR/$DATE/"


# Обновление ссылки на последний снапшот
rm -f "$SNAPSHOT_DIR/latest"
ln -s "$SNAPSHOT_DIR/$DATE" "$SNAPSHOT_DIR/latest"

echo "Инкрементальный бэкап завершён: $DATE"

  1. Сделайте исполняемым:

bash

sudo chmod +x /usr/local/bin/minecraft-incremental-backup.sh

Шаг 5. Настройка cron

  1. Откройте планировщик задач:

bash

sudo crontab -e

  1. Добавьте строки:

cron

# Полный бэкап каждый день в 3:00
0 3 * * * /usr/local/bin/minecraft-backup.sh

# Инкрементальный бэкап каждые 6 часов
0 */6 * * * /usr/local/bin/minecraft-incremental-backup.sh

# Ротация бэкапов каждый день в 4:00
0 4 * * * /usr/local/bin/backup-rotation.sh

Расшифровка расписания:

  • 0 3 * * * — в 03:00 каждый день;
  • 0 */6 * * * — каждые 6 часов (00:00, 06:00, 12:00, 18:00);
  • 0 4 * * * — в 04:00 каждый день.

Шаг 6. Тестирование

  1. Запустите скрипт вручную:

bash

sudo /usr/local/bin/minecraft-backup.sh

  1. Проверьте, что архив появился в /backup/minecraft/worlds/.
  2. Убедитесь, что сервер корректно перезапустился.
  3. Проверьте ротацию:

bash

sudo /usr/local/bin/backup-rotation.sh

Убедитесь, что старые файлы удаляются.

Шаг 7. Дополнительные настройки (опционально)

Уведомления по email:

  1. Установите mailutils:

bash

sudo apt install mailutils

  1. Измените скрипт бэкапа, добавив в конец:

bash

echo "Бэкап мира Minecraft завершён успешно: $BACKUP_FILE" | mail -s "Minecraft Backup Success" admin@example.com

Удаленное копирование через rsync:
Если нужно сохранять бэкапы на другом сервере:

bash

rsync -avz --delete /backup/minecraft/ user@remote-server:/backup/minecraft/

Для этого настройте SSH‑ключи без пароля между серверами.

Чек‑лист проверки

  1. Сервер корректно останавливается перед бэкапом.
  2. Бэкап создаётся в указанной папке.
  3. Сервер автоматически запускается после бэкапа.
  4. Старые бэкапы удаляются по расписанию.
  5. Инкрементальные копии работают (если используете rsync).
  6. При ошибках скрипт логирует их (можно добавить >> /var/log/minecraft-backup.log 2>&1 в cron).

Устранение распространённых проблем

  • «Сервер не останавливается»: проверьте имя сессии screen (screen -ls).
  • «Нет прав на запись»: убедитесь, что папка /backup/minecraft принадлежит пользователю сервера.
  • «rsync не создаёт ссылки»: проверьте, что --link-dest указывает на существующую папку.
  • «cron не запускает скрипт»: добавьте полный путь к командам в скрипте (например, /bin/tar вместо tar).
  • «Бэкап слишком большой»: используйте инкрементальные копии или архивируйте только изменённые файлы.

Рекомендации

  • Частота: для активного сервера — каждые 6–12 часов; для спокойного — раз в сутки.
  • Место хранения: используйте отдельный диск или сетевое хранилище.
  • Проверка: раз в месяц проверяйте, что бэкап восстанавливается.
  • Безопасность: шифруйте бэкапы (gpg), если они содержат конфиденциальные данные.
  • Мониторинг: настройте логирование и оповещения о сбоях.

Теперь у вас есть полностью автоматизированная система резервного копирования Minecraft‑сервера. Если хотите, могу помочь адаптировать скрипты под вашу конфигурацию или разобрать какой‑то шаг подробнее!