Настройка автоматических бэкапов Bedrock сервера: различия между версиями
Admin (обсуждение | вклад) Новая страница: «= Настройка автоматических бэкапов Bedrock сервера = == 1. Подготовка системы == * Войдите в си…» |
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
||
| Строка 56: | Строка 56: | ||
2. Создайте отдельный раздел для бэкапов (опционально): | 2. Создайте отдельный раздел для бэкапов (опционально): | ||
<pre> | <pre># Рекомендуется использовать отдельный диск или раздел | ||
# для бэкапов</pre> | |||
== 4. Создание скрипта бэкапа == | == 4. Создание скрипта бэкапа == | ||
| Строка 67: | Строка 67: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Настройки бэкапа | |||
BACKUP_DIR="/backup/bedrock" | BACKUP_DIR="/backup/bedrock" | ||
SERVER_DIR="/opt/bedrock" | SERVER_DIR="/opt/bedrock" | ||
| Строка 76: | Строка 76: | ||
RETENTION_DAYS=7 | RETENTION_DAYS=7 | ||
# Функция логирования | |||
log_message() { | log_message() { | ||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" | echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" | ||
} | } | ||
# Проверка доступности сервера | |||
if [ ! -d "$SERVER_DIR" ]; then | if [ ! -d "$SERVER_DIR" ]; then | ||
log_message "ERROR: Server directory not found: $SERVER_DIR" | log_message "ERROR: Server directory not found: $SERVER_DIR" | ||
| Строка 89: | Строка 89: | ||
log_message "Starting Bedrock server backup..." | log_message "Starting Bedrock server backup..." | ||
# Создание директории для бэкапа | |||
BACKUP_PATH="$BACKUP_DIR/$DATE" | BACKUP_PATH="$BACKUP_DIR/$DATE" | ||
mkdir -p "$BACKUP_PATH" | mkdir -p "$BACKUP_PATH" | ||
# Остановка сервера для консистентного бэкапа | |||
log_message "Stopping Bedrock server..." | log_message "Stopping Bedrock server..." | ||
sudo systemctl stop minecraft-bedrock | sudo systemctl stop minecraft-bedrock | ||
# Ожидание полной остановки | |||
sleep 5 | sleep 5 | ||
# Бэкап миров | |||
log_message "Backing up worlds..." | log_message "Backing up worlds..." | ||
if [ -d "$SERVER_DIR/worlds" ]; then | if [ -d "$SERVER_DIR/worlds" ]; then | ||
| Строка 107: | Строка 107: | ||
fi | fi | ||
# Бэкап конфигурации | |||
log_message "Backing up configuration files..." | log_message "Backing up configuration files..." | ||
tar -czf "$BACKUP_PATH/configs.tar.gz" -C "$SERVER_DIR" \ | tar -czf "$BACKUP_PATH/configs.tar.gz" -C "$SERVER_DIR" \ | ||
| Строка 115: | Строка 115: | ||
valid_known_packs.json 2>/dev/null | valid_known_packs.json 2>/dev/null | ||
# Бэкап дополнений | |||
log_message "Backing up addons..." | log_message "Backing up addons..." | ||
if [ -d "$SERVER_DIR/behavior_packs" ] || [ -d "$SERVER_DIR/resource_packs" ]; then | if [ -d "$SERVER_DIR/behavior_packs" ] || [ -d "$SERVER_DIR/resource_packs" ]; then | ||
| Строка 122: | Строка 122: | ||
fi | fi | ||
# Бэкап логов | |||
log_message "Backing up logs..." | log_message "Backing up logs..." | ||
if [ -d "$SERVER_DIR/logs" ]; then | if [ -d "$SERVER_DIR/logs" ]; then | ||
| Строка 128: | Строка 128: | ||
fi | fi | ||
# Полный бэкап всего сервера (опционально) | |||
log_message "Creating full backup..." | log_message "Creating full backup..." | ||
tar -czf "$BACKUP_PATH/full-backup.tar.gz" -C "$SERVER_DIR" . \ | tar -czf "$BACKUP_PATH/full-backup.tar.gz" -C "$SERVER_DIR" . \ | ||
| Строка 135: | Строка 135: | ||
2>/dev/null | 2>/dev/null | ||
# Запуск сервера | |||
log_message "Starting Bedrock server..." | log_message "Starting Bedrock server..." | ||
sudo systemctl start minecraft-bedrock | sudo systemctl start minecraft-bedrock | ||
# Подсчет размера бэкапа | |||
BACKUP_SIZE=$(du -sh "$BACKUP_PATH" | cut -f1) | BACKUP_SIZE=$(du -sh "$BACKUP_PATH" | cut -f1) | ||
log_message "Backup completed successfully. Size: $BACKUP_SIZE" | log_message "Backup completed successfully. Size: $BACKUP_SIZE" | ||
# Удаление старых бэкапов | |||
log_message "Cleaning up old backups (older than $RETENTION_DAYS days)..." | log_message "Cleaning up old backups (older than $RETENTION_DAYS days)..." | ||
find "$BACKUP_DIR" -type d -name "20*" -mtime +$RETENTION_DAYS -exec rm -rf {} \; | find "$BACKUP_DIR" -type d -name "20*" -mtime +$RETENTION_DAYS -exec rm -rf {} \; | ||
# Подсчет оставшихся бэкапов | |||
BACKUP_COUNT=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l) | BACKUP_COUNT=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l) | ||
log_message "Total backups remaining: $BACKUP_COUNT" | log_message "Total backups remaining: $BACKUP_COUNT" | ||
# Проверка места на диске | |||
DISK_USAGE=$(df -h "$BACKUP_DIR" | tail -1 | awk '{print $5}' | sed 's/%//') | DISK_USAGE=$(df -h "$BACKUP_DIR" | tail -1 | awk '{print $5}' | sed 's/%//') | ||
if [ "$DISK_USAGE" -gt 80 ]; then | if [ "$DISK_USAGE" -gt 80 ]; then | ||
| Строка 175: | Строка 175: | ||
2. Добавьте задачи для автоматического бэкапа: | 2. Добавьте задачи для автоматического бэкапа: | ||
Бэкап каждый час | |||
<pre>0 * * * * /usr/local/bin/bedrock-backup.sh</pre> | <pre>0 * * * * /usr/local/bin/bedrock-backup.sh</pre> | ||
Бэкап каждые 6 часов | |||
<pre>0 */6 * * * /usr/local/bin/bedrock-backup.sh</pre> | <pre>0 */6 * * * /usr/local/bin/bedrock-backup.sh</pre> | ||
Бэкап каждые 12 часов | |||
<pre>0 */12 * * * /usr/local/bin/bedrock-backup.sh</pre> | <pre>0 */12 * * * /usr/local/bin/bedrock-backup.sh</pre> | ||
Бэкап ежедневно в 3:00 | |||
<pre>0 3 * * * /usr/local/bin/bedrock-backup.sh</pre> | <pre>0 3 * * * /usr/local/bin/bedrock-backup.sh</pre> | ||
3. Пример полной конфигурации: | 3. Пример полной конфигурации: | ||
<pre> | <pre># Бэкап каждый день в 3:00 ночи | ||
0 3 * * * /usr/local/bin/bedrock-backup.sh >> /var/log/bedrock-backup-cron.log 2>&1</pre> | 0 3 * * * /usr/local/bin/bedrock-backup.sh >> /var/log/bedrock-backup-cron.log 2>&1</pre> | ||
| Строка 207: | Строка 207: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
BACKUP_DIR="/backup/bedrock" | BACKUP_DIR="/backup/bedrock" | ||
| Строка 216: | Строка 216: | ||
INCREMENTAL=false | INCREMENTAL=false | ||
# Парсинг аргументов | |||
while [[ $# -gt 0 ]]; do | while [[ $# -gt 0 ]]; do | ||
case $1 in | case $1 in | ||
| Строка 238: | Строка 238: | ||
} | } | ||
# Функция инкрементального бэкапа | |||
incremental_backup() { | incremental_backup() { | ||
log_message "Starting incremental backup..." | log_message "Starting incremental backup..." | ||
# Поиск последнего бэкапа | |||
LAST_BACKUP=$(ls -td "$BACKUP_DIR"/20* 2>/dev/null | head -1) | LAST_BACKUP=$(ls -td "$BACKUP_DIR"/20* 2>/dev/null | head -1) | ||
| Строка 251: | Строка 251: | ||
fi | fi | ||
# Инкрементальный бэкап только измененных файлов | |||
log_message "Using rsync for incremental backup..." | log_message "Using rsync for incremental backup..." | ||
rsync -av --link-dest="$LAST_BACKUP" \ | rsync -av --link-dest="$LAST_BACKUP" \ | ||
| Строка 262: | Строка 262: | ||
} | } | ||
# Основной процесс бэкапа | |||
if [ "$INCREMENTAL" = true ]; then | if [ "$INCREMENTAL" = true ]; then | ||
incremental_backup | incremental_backup | ||
else | else | ||
# Полный бэкап (используйте базовый скрипт) | |||
/usr/local/bin/bedrock-backup.sh | /usr/local/bin/bedrock-backup.sh | ||
fi</pre> | fi</pre> | ||
| Строка 281: | Строка 281: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
BACKUP_DIR="/backup/bedrock" | BACKUP_DIR="/backup/bedrock" | ||
| Строка 293: | Строка 293: | ||
log_message "Starting backup rotation..." | log_message "Starting backup rotation..." | ||
# Удаление старых бэкапов | |||
DELETED=$(find "$BACKUP_DIR" -type d -name "20*" -mtime +$RETENTION_DAYS -exec rm -rf {} \; -print | wc -l) | DELETED=$(find "$BACKUP_DIR" -type d -name "20*" -mtime +$RETENTION_DAYS -exec rm -rf {} \; -print | wc -l) | ||
log_message "Deleted $DELETED old backup(s)" | log_message "Deleted $DELETED old backup(s)" | ||
# Подсчет оставшихся бэкапов | |||
REMAINING=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l) | REMAINING=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l) | ||
TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1) | TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1) | ||
| Строка 305: | Строка 305: | ||
log_message "Total backup size: $TOTAL_SIZE" | log_message "Total backup size: $TOTAL_SIZE" | ||
# Проверка места на диске | |||
DISK_USAGE=$(df -h "$BACKUP_DIR" | tail -1 | awk '{print $5}' | sed 's/%//') | DISK_USAGE=$(df -h "$BACKUP_DIR" | tail -1 | awk '{print $5}' | sed 's/%//') | ||
if [ "$DISK_USAGE" -gt 90 ]; then | if [ "$DISK_USAGE" -gt 90 ]; then | ||
log_message "WARNING: Critical disk usage: ${DISK_USAGE}%" | log_message "WARNING: Critical disk usage: ${DISK_USAGE}%" | ||
# Удаление самых старых бэкапов | |||
find "$BACKUP_DIR" -type d -name "20*" -exec ls -dt {} + | tail -n +6 | xargs rm -rf | find "$BACKUP_DIR" -type d -name "20*" -exec ls -dt {} + | tail -n +6 | xargs rm -rf | ||
log_message "Emergency cleanup performed" | log_message "Emergency cleanup performed" | ||
| Строка 333: | Строка 333: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
if [ -z "$1" ]; then | if [ -z "$1" ]; then | ||
| Строка 357: | Строка 357: | ||
echo "Type: $RESTORE_TYPE" | echo "Type: $RESTORE_TYPE" | ||
# Остановка сервера | |||
echo "Stopping Bedrock server..." | echo "Stopping Bedrock server..." | ||
sudo systemctl stop minecraft-bedrock | sudo systemctl stop minecraft-bedrock | ||
# Создание резервной копии текущего состояния | |||
CURRENT_BACKUP="$BACKUP_DIR/current-before-restore-$(date +%Y%m%d_%H%M%S)" | CURRENT_BACKUP="$BACKUP_DIR/current-before-restore-$(date +%Y%m%d_%H%M%S)" | ||
mkdir -p "$CURRENT_BACKUP" | mkdir -p "$CURRENT_BACKUP" | ||
cp -r "$SERVER_DIR"/* "$CURRENT_BACKUP/" 2>/dev/null | cp -r "$SERVER_DIR"/* "$CURRENT_BACKUP/" 2>/dev/null | ||
# Восстановление | |||
case "$RESTORE_TYPE" in | case "$RESTORE_TYPE" in | ||
world) | world) | ||
| Строка 386: | Строка 386: | ||
esac | esac | ||
# Установка прав доступа | |||
sudo chown -R bedrock:bedrock "$SERVER_DIR" | sudo chown -R bedrock:bedrock "$SERVER_DIR" | ||
# Запуск сервера | |||
echo "Starting Bedrock server..." | echo "Starting Bedrock server..." | ||
sudo systemctl start minecraft-bedrock | sudo systemctl start minecraft-bedrock | ||
| Строка 400: | Строка 400: | ||
4. Использование: | 4. Использование: | ||
<pre> | <pre># Восстановить все | ||
sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 all | sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 all | ||
# Восстановить только миры | |||
sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 world | sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 world | ||
# Восстановить только конфигурацию | |||
sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 config</pre> | sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 config</pre> | ||
| Строка 417: | Строка 417: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
BACKUP_DIR="/backup/bedrock" | BACKUP_DIR="/backup/bedrock" | ||
| Строка 424: | Строка 424: | ||
echo "" | echo "" | ||
# Последний бэкап | |||
LAST_BACKUP=$(ls -td "$BACKUP_DIR"/20* 2>/dev/null | head -1) | LAST_BACKUP=$(ls -td "$BACKUP_DIR"/20* 2>/dev/null | head -1) | ||
if [ -z "$LAST_BACKUP" ]; then | if [ -z "$LAST_BACKUP" ]; then | ||
| Строка 440: | Строка 440: | ||
echo "" | echo "" | ||
# Общая статистика | |||
TOTAL_BACKUPS=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l) | TOTAL_BACKUPS=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l) | ||
TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1) | TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1) | ||
| Строка 448: | Строка 448: | ||
echo "" | echo "" | ||
# Список всех бэкапов | |||
echo "All backups:" | echo "All backups:" | ||
ls -lh "$BACKUP_DIR" | grep "^d" | awk '{print $9, $5, $6, $7, $8}' | head -10</pre> | ls -lh "$BACKUP_DIR" | grep "^d" | awk '{print $9, $5, $6, $7, $8}' | head -10</pre> | ||
| Строка 458: | Строка 458: | ||
<pre>sudo /usr/local/bin/bedrock-backup-status.sh</pre> | <pre>sudo /usr/local/bin/bedrock-backup-status.sh</pre> | ||
== 10. Удаленный бэкап (опционально) | == 10. Удаленный бэкап (опционально) == | ||
=== Настройка удаленного бэкапа === | === Настройка удаленного бэкапа === | ||
| Строка 466: | Строка 466: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
REMOTE_HOST="backup-server.example.com" | REMOTE_HOST="backup-server.example.com" | ||
| Строка 473: | Строка 473: | ||
LOCAL_BACKUP="/backup/bedrock" | LOCAL_BACKUP="/backup/bedrock" | ||
# Создание локального бэкапа | |||
/usr/local/bin/bedrock-backup.sh | /usr/local/bin/bedrock-backup.sh | ||
# Копирование на удаленный сервер | |||
LATEST_BACKUP=$(ls -td "$LOCAL_BACKUP"/20* | head -1) | LATEST_BACKUP=$(ls -td "$LOCAL_BACKUP"/20* | head -1) | ||
| Строка 485: | Строка 485: | ||
echo "Remote backup completed!"</pre> | echo "Remote backup completed!"</pre> | ||
== 11. Устранение неполадок | == 11. Устранение неполадок == | ||
=== Проблемы с бэкапами === | === Проблемы с бэкапами === | ||
| Строка 506: | Строка 506: | ||
Настройка автоматических бэкапов Bedrock сервера на Ubuntu 24.04 обеспечивает надежное сохранение данных. Регулярные бэкапы защитят ваши миры, конфигурацию и дополнения от потери данных. | Настройка автоматических бэкапов Bedrock сервера на Ubuntu 24.04 обеспечивает надежное сохранение данных. Регулярные бэкапы защитят ваши миры, конфигурацию и дополнения от потери данных. | ||
'''Для размещения ваших Bedrock серверов с автоматическими бэкапами на надежном хостинге рекомендуем воспользоваться услугами [ | '''Для размещения ваших Bedrock серверов с автоматическими бэкапами на надежном хостинге рекомендуем воспользоваться услугами [https://ark-hoster.ru ARK-HOSTER.RU]:''' | ||
* '''[ | * '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для высоконагруженных Bedrock серверов | ||
* '''[ | * '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних серверов | ||
Наши специалисты помогут с настройкой автоматических бэкапов на Bedrock серверах! | Наши специалисты помогут с настройкой автоматических бэкапов на Bedrock серверах! | ||
Текущая версия от 08:13, 14 ноября 2026
Настройка автоматических бэкапов Bedrock сервера
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что Bedrock сервер установлен и работает на Ubuntu 24.04 LTS.
- Проверьте наличие свободного места для бэкапов (рекомендуется минимум 50GB).
- Убедитесь, что у вас есть доступ к серверу через SSH.
2. Установка необходимых пакетов
Обновление системы
1. Обновите систему:
sudo apt update sudo apt upgrade -y
2. Установите необходимые пакеты:
sudo apt install -y rsync tar gzip zip unzip cron
3. Проверьте установку:
which rsync which tar which gzip
Настройка cron
1. Убедитесь, что cron запущен:
sudo systemctl start cron sudo systemctl enable cron
2. Проверьте статус:
sudo systemctl status cron
3. Создание структуры для бэкапов
Создание директорий
1. Создайте основную директорию для бэкапов:
sudo mkdir -p /backup/bedrock
2. Создайте поддиректории:
sudo mkdir -p /backup/bedrock/worlds sudo mkdir -p /backup/bedrock/configs sudo mkdir -p /backup/bedrock/addons sudo mkdir -p /backup/bedrock/logs
3. Установите права доступа:
sudo chown -R bedrock:bedrock /backup/bedrock sudo chmod -R 755 /backup/bedrock
Проверка свободного места
1. Проверьте доступное место:
df -h /backup
2. Создайте отдельный раздел для бэкапов (опционально):
# Рекомендуется использовать отдельный диск или раздел # для бэкапов
4. Создание скрипта бэкапа
Базовый скрипт бэкапа
1. Создайте основной скрипт:
sudo nano /usr/local/bin/bedrock-backup.sh
2. Добавьте содержимое:
#!/bin/bash
# Настройки бэкапа
BACKUP_DIR="/backup/bedrock"
SERVER_DIR="/opt/bedrock"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/bedrock-backup.log"
RETENTION_DAYS=7
# Функция логирования
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# Проверка доступности сервера
if [ ! -d "$SERVER_DIR" ]; then
log_message "ERROR: Server directory not found: $SERVER_DIR"
exit 1
fi
log_message "Starting Bedrock server backup..."
# Создание директории для бэкапа
BACKUP_PATH="$BACKUP_DIR/$DATE"
mkdir -p "$BACKUP_PATH"
# Остановка сервера для консистентного бэкапа
log_message "Stopping Bedrock server..."
sudo systemctl stop minecraft-bedrock
# Ожидание полной остановки
sleep 5
# Бэкап миров
log_message "Backing up worlds..."
if [ -d "$SERVER_DIR/worlds" ]; then
tar -czf "$BACKUP_PATH/worlds.tar.gz" -C "$SERVER_DIR" worlds/
log_message "Worlds backed up: $(du -h "$BACKUP_PATH/worlds.tar.gz" | cut -f1)"
fi
# Бэкап конфигурации
log_message "Backing up configuration files..."
tar -czf "$BACKUP_PATH/configs.tar.gz" -C "$SERVER_DIR" \
server.properties \
permissions.json \
allowlist.json \
valid_known_packs.json 2>/dev/null
# Бэкап дополнений
log_message "Backing up addons..."
if [ -d "$SERVER_DIR/behavior_packs" ] || [ -d "$SERVER_DIR/resource_packs" ]; then
tar -czf "$BACKUP_PATH/addons.tar.gz" -C "$SERVER_DIR" \
behavior_packs/ resource_packs/ 2>/dev/null
fi
# Бэкап логов
log_message "Backing up logs..."
if [ -d "$SERVER_DIR/logs" ]; then
tar -czf "$BACKUP_PATH/logs.tar.gz" -C "$SERVER_DIR" logs/ 2>/dev/null
fi
# Полный бэкап всего сервера (опционально)
log_message "Creating full backup..."
tar -czf "$BACKUP_PATH/full-backup.tar.gz" -C "$SERVER_DIR" . \
--exclude='*.log' \
--exclude='crash-reports' \
2>/dev/null
# Запуск сервера
log_message "Starting Bedrock server..."
sudo systemctl start minecraft-bedrock
# Подсчет размера бэкапа
BACKUP_SIZE=$(du -sh "$BACKUP_PATH" | cut -f1)
log_message "Backup completed successfully. Size: $BACKUP_SIZE"
# Удаление старых бэкапов
log_message "Cleaning up old backups (older than $RETENTION_DAYS days)..."
find "$BACKUP_DIR" -type d -name "20*" -mtime +$RETENTION_DAYS -exec rm -rf {} \;
# Подсчет оставшихся бэкапов
BACKUP_COUNT=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l)
log_message "Total backups remaining: $BACKUP_COUNT"
# Проверка места на диске
DISK_USAGE=$(df -h "$BACKUP_DIR" | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt 80 ]; then
log_message "WARNING: Disk usage is ${DISK_USAGE}%. Consider cleaning up old backups."
fi
log_message "Backup process completed!"
exit 0
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/bedrock-backup.sh
4. Тестирование:
sudo /usr/local/bin/bedrock-backup.sh
5. Настройка автоматического бэкапа
Настройка cron
1. Откройте crontab:
sudo crontab -e
2. Добавьте задачи для автоматического бэкапа:
Бэкап каждый час
0 * * * * /usr/local/bin/bedrock-backup.sh
Бэкап каждые 6 часов
0 */6 * * * /usr/local/bin/bedrock-backup.sh
Бэкап каждые 12 часов
0 */12 * * * /usr/local/bin/bedrock-backup.sh
Бэкап ежедневно в 3:00
0 3 * * * /usr/local/bin/bedrock-backup.sh
3. Пример полной конфигурации:
# Бэкап каждый день в 3:00 ночи 0 3 * * * /usr/local/bin/bedrock-backup.sh >> /var/log/bedrock-backup-cron.log 2>&1
Проверка задач cron
1. Просмотр задач:
sudo crontab -l
2. Проверка логов cron:
sudo tail -f /var/log/syslog | grep CRON
6. Расширенный скрипт бэкапа
Скрипт с инкрементальными бэкапами
1. Создайте расширенный скрипт:
sudo nano /usr/local/bin/bedrock-backup-advanced.sh
2. Добавьте содержимое:
#!/bin/bash
BACKUP_DIR="/backup/bedrock"
SERVER_DIR="/opt/bedrock"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/bedrock-backup.log"
RETENTION_DAYS=7
INCREMENTAL=false
# Парсинг аргументов
while [[ $# -gt 0 ]]; do
case $1 in
--incremental)
INCREMENTAL=true
shift
;;
--full)
INCREMENTAL=false
shift
;;
*)
echo "Unknown option: $1"
exit 1
;;
esac
done
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# Функция инкрементального бэкапа
incremental_backup() {
log_message "Starting incremental backup..."
# Поиск последнего бэкапа
LAST_BACKUP=$(ls -td "$BACKUP_DIR"/20* 2>/dev/null | head -1)
if [ -z "$LAST_BACKUP" ]; then
log_message "No previous backup found, creating full backup..."
incremental_backup=false
return
fi
# Инкрементальный бэкап только измененных файлов
log_message "Using rsync for incremental backup..."
rsync -av --link-dest="$LAST_BACKUP" \
"$SERVER_DIR/worlds/" \
"$BACKUP_DIR/$DATE/worlds/" \
--exclude='*.log' \
--exclude='cache'
log_message "Incremental backup completed"
}
# Основной процесс бэкапа
if [ "$INCREMENTAL" = true ]; then
incremental_backup
else
# Полный бэкап (используйте базовый скрипт)
/usr/local/bin/bedrock-backup.sh
fi
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-backup-advanced.sh
7. Настройка ротации бэкапов
Скрипт ротации
1. Создайте скрипт ротации:
sudo nano /usr/local/bin/bedrock-backup-rotation.sh
2. Добавьте содержимое:
#!/bin/bash
BACKUP_DIR="/backup/bedrock"
RETENTION_DAYS=7
LOG_FILE="/var/log/bedrock-backup-rotation.log"
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
log_message "Starting backup rotation..."
# Удаление старых бэкапов
DELETED=$(find "$BACKUP_DIR" -type d -name "20*" -mtime +$RETENTION_DAYS -exec rm -rf {} \; -print | wc -l)
log_message "Deleted $DELETED old backup(s)"
# Подсчет оставшихся бэкапов
REMAINING=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l)
TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1)
log_message "Remaining backups: $REMAINING"
log_message "Total backup size: $TOTAL_SIZE"
# Проверка места на диске
DISK_USAGE=$(df -h "$BACKUP_DIR" | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt 90 ]; then
log_message "WARNING: Critical disk usage: ${DISK_USAGE}%"
# Удаление самых старых бэкапов
find "$BACKUP_DIR" -type d -name "20*" -exec ls -dt {} + | tail -n +6 | xargs rm -rf
log_message "Emergency cleanup performed"
fi
log_message "Rotation completed!"
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-backup-rotation.sh
4. Добавьте в cron (выполняется ежедневно в 4:00):
sudo crontab -e
5. Добавьте задачу:
0 4 * * * /usr/local/bin/bedrock-backup-rotation.sh
8. Восстановление из бэкапа
Скрипт восстановления
1. Создайте скрипт восстановления:
sudo nano /usr/local/bin/bedrock-backup-restore.sh
2. Добавьте содержимое:
#!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 <backup-date> [world|config|all]"
echo "Example: $0 20240101_030000 all"
exit 1
fi
BACKUP_DATE="$1"
RESTORE_TYPE="${2:-all}"
BACKUP_DIR="/backup/bedrock"
SERVER_DIR="/opt/bedrock"
BACKUP_PATH="$BACKUP_DIR/$BACKUP_DATE"
if [ ! -d "$BACKUP_PATH" ]; then
echo "Backup not found: $BACKUP_PATH"
echo "Available backups:"
ls -1 "$BACKUP_DIR" | grep "^20"
exit 1
fi
echo "Restoring from backup: $BACKUP_DATE"
echo "Type: $RESTORE_TYPE"
# Остановка сервера
echo "Stopping Bedrock server..."
sudo systemctl stop minecraft-bedrock
# Создание резервной копии текущего состояния
CURRENT_BACKUP="$BACKUP_DIR/current-before-restore-$(date +%Y%m%d_%H%M%S)"
mkdir -p "$CURRENT_BACKUP"
cp -r "$SERVER_DIR"/* "$CURRENT_BACKUP/" 2>/dev/null
# Восстановление
case "$RESTORE_TYPE" in
world)
echo "Restoring worlds..."
tar -xzf "$BACKUP_PATH/worlds.tar.gz" -C "$SERVER_DIR"
;;
config)
echo "Restoring configuration..."
tar -xzf "$BACKUP_PATH/configs.tar.gz" -C "$SERVER_DIR"
;;
all)
echo "Restoring full backup..."
tar -xzf "$BACKUP_PATH/full-backup.tar.gz" -C "$SERVER_DIR"
;;
*)
echo "Unknown restore type: $RESTORE_TYPE"
exit 1
;;
esac
# Установка прав доступа
sudo chown -R bedrock:bedrock "$SERVER_DIR"
# Запуск сервера
echo "Starting Bedrock server..."
sudo systemctl start minecraft-bedrock
echo "Restore completed!"
echo "Previous state backed up to: $CURRENT_BACKUP"
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-backup-restore.sh
4. Использование:
# Восстановить все sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 all # Восстановить только миры sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 world # Восстановить только конфигурацию sudo /usr/local/bin/bedrock-backup-restore.sh 20240101_030000 config
9. Мониторинг бэкапов
Проверка статуса бэкапов
1. Создайте скрипт проверки:
sudo nano /usr/local/bin/bedrock-backup-status.sh
2. Добавьте содержимое:
#!/bin/bash
BACKUP_DIR="/backup/bedrock"
echo "=== Bedrock Backup Status ==="
echo ""
# Последний бэкап
LAST_BACKUP=$(ls -td "$BACKUP_DIR"/20* 2>/dev/null | head -1)
if [ -z "$LAST_BACKUP" ]; then
echo "No backups found!"
else
LAST_BACKUP_DATE=$(basename "$LAST_BACKUP")
LAST_BACKUP_TIME=$(stat -c %y "$LAST_BACKUP" | cut -d' ' -f1,2 | cut -d'.' -f1)
LAST_BACKUP_SIZE=$(du -sh "$LAST_BACKUP" | cut -f1)
echo "Last backup: $LAST_BACKUP_DATE"
echo "Backup time: $LAST_BACKUP_TIME"
echo "Backup size: $LAST_BACKUP_SIZE"
fi
echo ""
# Общая статистика
TOTAL_BACKUPS=$(find "$BACKUP_DIR" -type d -name "20*" | wc -l)
TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1)
echo "Total backups: $TOTAL_BACKUPS"
echo "Total size: $TOTAL_SIZE"
echo ""
# Список всех бэкапов
echo "All backups:"
ls -lh "$BACKUP_DIR" | grep "^d" | awk '{print $9, $5, $6, $7, $8}' | head -10
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-backup-status.sh
4. Использование:
sudo /usr/local/bin/bedrock-backup-status.sh
10. Удаленный бэкап (опционально)
Настройка удаленного бэкапа
1. Для бэкапа на другой сервер используйте rsync:
sudo nano /usr/local/bin/bedrock-backup-remote.sh
2. Добавьте содержимое:
#!/bin/bash
REMOTE_HOST="backup-server.example.com"
REMOTE_USER="backup"
REMOTE_PATH="/backup/remote/bedrock"
LOCAL_BACKUP="/backup/bedrock"
# Создание локального бэкапа
/usr/local/bin/bedrock-backup.sh
# Копирование на удаленный сервер
LATEST_BACKUP=$(ls -td "$LOCAL_BACKUP"/20* | head -1)
echo "Copying to remote server..."
rsync -avz --progress "$LATEST_BACKUP/" \
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/$(basename $LATEST_BACKUP)/"
echo "Remote backup completed!"
11. Устранение неполадок
Проблемы с бэкапами
1. Недостаточно места на диске:
- Увеличьте RETENTION_DAYS для более быстрого удаления старых бэкапов
- Используйте сжатие (gzip уже используется)
- Переместите бэкапы на отдельный диск
2. Ошибки при создании бэкапа:
- Проверьте права доступа к директориям
- Проверьте логи:
tail -f /var/log/bedrock-backup.log
3. Сервер не останавливается для бэкапа:
- Увеличьте время ожидания в скрипте
- Используйте принудительную остановку:
sudo systemctl kill minecraft-bedrock
Заключение
Настройка автоматических бэкапов Bedrock сервера на Ubuntu 24.04 обеспечивает надежное сохранение данных. Регулярные бэкапы защитят ваши миры, конфигурацию и дополнения от потери данных.
Для размещения ваших Bedrock серверов с автоматическими бэкапами на надежном хостинге рекомендуем воспользоваться услугами ARK-HOSTER.RU:
- Выделенные серверы - для высоконагруженных Bedrock серверов
- VPS/VDS серверы - для небольших и средних серверов
Наши специалисты помогут с настройкой автоматических бэкапов на Bedrock серверах!