Настройка автоматических бэкапов Minecraft: различия между версиями
Admin (обсуждение | вклад) Нет описания правки |
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
||
| Строка 50: | Строка 50: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
BACKUP_DIR="/backup/minecraft" | BACKUP_DIR="/backup/minecraft" | ||
RETENTION_DAYS=7 | RETENTION_DAYS=7 | ||
# Удаление старых бэкапов | |||
find $BACKUP_DIR -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete | find $BACKUP_DIR -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete | ||
find $BACKUP_DIR -name "*.zip" -mtime +$RETENTION_DAYS -delete | find $BACKUP_DIR -name "*.zip" -mtime +$RETENTION_DAYS -delete | ||
# Удаление пустых директорий | |||
find $BACKUP_DIR -type d -empty -delete | find $BACKUP_DIR -type d -empty -delete | ||
| Строка 76: | Строка 76: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Настройки бэкапа | |||
BACKUP_DIR="/backup/minecraft" | BACKUP_DIR="/backup/minecraft" | ||
SERVER_DIR="/opt/minecraft" | SERVER_DIR="/opt/minecraft" | ||
| Строка 84: | Строка 84: | ||
LOG_FILE="/var/log/minecraft-backup.log" | LOG_FILE="/var/log/minecraft-backup.log" | ||
# Функция логирования | |||
log_message() { | log_message() { | ||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE | echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $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" | ||
| Строка 97: | Строка 97: | ||
log_message "Starting Minecraft backup..." | log_message "Starting Minecraft backup..." | ||
# Создание директории для бэкапа | |||
mkdir -p $BACKUP_DIR/$DATE | mkdir -p $BACKUP_DIR/$DATE | ||
# Остановка сервера для бэкапа | |||
log_message "Stopping Minecraft server..." | log_message "Stopping Minecraft server..." | ||
systemctl stop minecraft-spigot 2>/dev/null || true | systemctl stop minecraft-spigot 2>/dev/null || true | ||
| Строка 106: | Строка 106: | ||
systemctl stop minecraft-bukkit 2>/dev/null || true | systemctl stop minecraft-bukkit 2>/dev/null || true | ||
# Ожидание полной остановки | |||
sleep 10 | sleep 10 | ||
# Создание архива мира | |||
log_message "Backing up world data..." | log_message "Backing up world data..." | ||
if [ -d "$SERVER_DIR/world" ]; then | if [ -d "$SERVER_DIR/world" ]; then | ||
| Строка 116: | Строка 116: | ||
fi | fi | ||
# Создание архива плагинов | |||
log_message "Backing up plugins..." | log_message "Backing up plugins..." | ||
if [ -d "$SERVER_DIR/plugins" ]; then | if [ -d "$SERVER_DIR/plugins" ]; then | ||
| Строка 123: | Строка 123: | ||
fi | fi | ||
# Создание архива конфигурации | |||
log_message "Backing up configuration..." | log_message "Backing up configuration..." | ||
tar -czf $BACKUP_DIR/$DATE/config-$DATE.tar.gz -C $SERVER_DIR server.properties bukkit.yml spigot.yml paper-global.yml 2>/dev/null || true | tar -czf $BACKUP_DIR/$DATE/config-$DATE.tar.gz -C $SERVER_DIR server.properties bukkit.yml spigot.yml paper-global.yml 2>/dev/null || true | ||
log_message "Configuration backup completed" | log_message "Configuration backup completed" | ||
# Создание архива логов | |||
log_message "Backing up logs..." | log_message "Backing up logs..." | ||
if [ -d "$SERVER_DIR/logs" ]; then | if [ -d "$SERVER_DIR/logs" ]; then | ||
| Строка 135: | Строка 135: | ||
fi | fi | ||
# Создание полного архива | |||
log_message "Creating full backup archive..." | log_message "Creating full backup archive..." | ||
tar -czf $BACKUP_DIR/minecraft-full-backup-$DATE.tar.gz -C $BACKUP_DIR $DATE | tar -czf $BACKUP_DIR/minecraft-full-backup-$DATE.tar.gz -C $BACKUP_DIR $DATE | ||
log_message "Full backup archive created" | log_message "Full backup archive created" | ||
# Удаление временной директории | |||
rm -rf $BACKUP_DIR/$DATE | rm -rf $BACKUP_DIR/$DATE | ||
# Запуск сервера | |||
log_message "Starting Minecraft server..." | log_message "Starting Minecraft server..." | ||
systemctl start minecraft-spigot 2>/dev/null || systemctl start minecraft-paper 2>/dev/null || systemctl start minecraft-bukkit 2>/dev/null || true | systemctl start minecraft-spigot 2>/dev/null || systemctl start minecraft-paper 2>/dev/null || systemctl start minecraft-bukkit 2>/dev/null || true | ||
| Строка 161: | Строка 161: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Настройки инкрементального бэкапа | |||
BACKUP_DIR="/backup/minecraft" | BACKUP_DIR="/backup/minecraft" | ||
SERVER_DIR="/opt/minecraft" | SERVER_DIR="/opt/minecraft" | ||
| Строка 170: | Строка 170: | ||
SNAPSHOT_DIR="$BACKUP_DIR/snapshots" | SNAPSHOT_DIR="$BACKUP_DIR/snapshots" | ||
# Функция логирования | |||
log_message() { | log_message() { | ||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE | echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE | ||
} | } | ||
# Создание директории для снапшотов | |||
mkdir -p $SNAPSHOT_DIR | mkdir -p $SNAPSHOT_DIR | ||
log_message "Starting incremental backup..." | log_message "Starting incremental backup..." | ||
# Создание снапшота мира | |||
if [ -d "$SERVER_DIR/world" ]; then | if [ -d "$SERVER_DIR/world" ]; then | ||
rsync -av --delete --link-dest=$SNAPSHOT_DIR/latest $SERVER_DIR/world/ $SNAPSHOT_DIR/world-$DATE/ | rsync -av --delete --link-dest=$SNAPSHOT_DIR/latest $SERVER_DIR/world/ $SNAPSHOT_DIR/world-$DATE/ | ||
| Строка 187: | Строка 187: | ||
fi | fi | ||
# Создание снапшота плагинов | |||
if [ -d "$SERVER_DIR/plugins" ]; then | if [ -d "$SERVER_DIR/plugins" ]; then | ||
rsync -av --delete --link-dest=$SNAPSHOT_DIR/plugins-latest $SERVER_DIR/plugins/ $SNAPSHOT_DIR/plugins-$DATE/ | rsync -av --delete --link-dest=$SNAPSHOT_DIR/plugins-latest $SERVER_DIR/plugins/ $SNAPSHOT_DIR/plugins-$DATE/ | ||
| Строка 213: | Строка 213: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Настройки удаленного бэкапа | |||
BACKUP_DIR="/backup/minecraft" | BACKUP_DIR="/backup/minecraft" | ||
REMOTE_HOST="backup.example.com" | REMOTE_HOST="backup.example.com" | ||
| Строка 223: | Строка 223: | ||
LOG_FILE="/var/log/minecraft-remote-backup.log" | LOG_FILE="/var/log/minecraft-remote-backup.log" | ||
# Функция логирования | |||
log_message() { | log_message() { | ||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE | echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE | ||
| Строка 230: | Строка 230: | ||
log_message "Starting remote backup..." | log_message "Starting remote backup..." | ||
# Синхронизация с удаленным сервером | |||
rsync -avz --delete --progress $BACKUP_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ | rsync -avz --delete --progress $BACKUP_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ | ||
| Строка 260: | Строка 260: | ||
2. Добавьте задачи бэкапа: | 2. Добавьте задачи бэкапа: | ||
<pre> | <pre># Minecraft backups | ||
# Полный бэкап каждый день в 3:00 | |||
0 3 * * * /usr/local/bin/minecraft-backup.sh | 0 3 * * * /usr/local/bin/minecraft-backup.sh | ||
# Инкрементальный бэкап каждые 6 часов | |||
0 */6 * * * /usr/local/bin/minecraft-incremental-backup.sh | 0 */6 * * * /usr/local/bin/minecraft-incremental-backup.sh | ||
# Удаленный бэкап каждый день в 4:00 | |||
0 4 * * * /usr/local/bin/minecraft-remote-backup.sh | 0 4 * * * /usr/local/bin/minecraft-remote-backup.sh | ||
# Ротация бэкапов каждый день в 5:00 | |||
0 5 * * * /usr/local/bin/backup-rotation.sh | 0 5 * * * /usr/local/bin/backup-rotation.sh | ||
</pre> | </pre> | ||
| Строка 280: | Строка 280: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Настройки уведомлений | |||
EMAIL="admin@example.com" | EMAIL="admin@example.com" | ||
LOG_FILE="/var/log/minecraft-backup.log" | LOG_FILE="/var/log/minecraft-backup.log" | ||
# Проверка последнего бэкапа | |||
LAST_BACKUP=$(tail -1 $LOG_FILE | grep "completed successfully") | LAST_BACKUP=$(tail -1 $LOG_FILE | grep "completed successfully") | ||
| Строка 308: | Строка 308: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Мониторинг бэкапов | |||
BACKUP_DIR="/backup/minecraft" | BACKUP_DIR="/backup/minecraft" | ||
LOG_FILE="/var/log/backup-monitor.log" | LOG_FILE="/var/log/backup-monitor.log" | ||
# Проверка размера бэкапов | |||
BACKUP_SIZE=$(du -sh $BACKUP_DIR | awk '{print $1}') | BACKUP_SIZE=$(du -sh $BACKUP_DIR | awk '{print $1}') | ||
echo "[$(date)] Backup size: $BACKUP_SIZE" >> $LOG_FILE | echo "[$(date)] Backup size: $BACKUP_SIZE" >> $LOG_FILE | ||
# Проверка количества бэкапов | |||
BACKUP_COUNT=$(find $BACKUP_DIR -name "*.tar.gz" | wc -l) | BACKUP_COUNT=$(find $BACKUP_DIR -name "*.tar.gz" | wc -l) | ||
echo "[$(date)] Backup count: $BACKUP_COUNT" >> $LOG_FILE | echo "[$(date)] Backup count: $BACKUP_COUNT" >> $LOG_FILE | ||
# Проверка последнего бэкапа | |||
LAST_BACKUP=$(find $BACKUP_DIR -name "*.tar.gz" -type f -printf '%T@ %p\n' | sort -n | tail -1 | awk '{print $2}') | LAST_BACKUP=$(find $BACKUP_DIR -name "*.tar.gz" -type f -printf '%T@ %p\n' | sort -n | tail -1 | awk '{print $2}') | ||
if [ ! -z "$LAST_BACKUP" ]; then | if [ ! -z "$LAST_BACKUP" ]; then | ||
| Строка 349: | Строка 349: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Скрипт восстановления из бэкапа | |||
BACKUP_DIR="/backup/minecraft" | BACKUP_DIR="/backup/minecraft" | ||
SERVER_DIR="/opt/minecraft" | SERVER_DIR="/opt/minecraft" | ||
| Строка 433: | Строка 433: | ||
Автоматические бэкапы Minecraft сервера успешно настроены! Теперь у вас есть надежная система резервного копирования с возможностями полных, инкрементальных и удаленных бэкапов. | Автоматические бэкапы Minecraft сервера успешно настроены! Теперь у вас есть надежная система резервного копирования с возможностями полных, инкрементальных и удаленных бэкапов. | ||
'''Для размещения ваших Minecraft серверов с настроенными бэкапами на надежном хостинге рекомендуем воспользоваться услугами [ | '''Для размещения ваших Minecraft серверов с настроенными бэкапами на надежном хостинге рекомендуем воспользоваться услугами [https://ark-hoster.ru ARK-HOSTER.RU]:''' | ||
* '''[ | * '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для высоконагруженных серверов с большими объемами данных | ||
* '''[ | * '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних серверов | ||
Наши специалисты помогут с настройкой системы бэкапов и обеспечением безопасности ваших данных! | Наши специалисты помогут с настройкой системы бэкапов и обеспечением безопасности ваших данных! | ||
Текущая версия от 08:12, 14 ноября 2026
Настройка автоматических бэкапов Minecraft
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
- Рекомендуется использовать Ubuntu 24.04 LTS для стабильной работы.
2. Установка необходимых пакетов
Обновление системы
1. Обновите систему:
sudo apt update
sudo apt upgrade -y
2. Установите необходимые пакеты:
sudo apt install -y rsync tar gzip zip unzip cron mailutils
Настройка cron
1. Убедитесь, что cron запущен:
sudo systemctl start cron
sudo systemctl enable cron
2. Проверьте статус:
sudo systemctl status cron
3. Создание структуры бэкапов
Создание директорий
1. Создайте основную директорию для бэкапов:
sudo mkdir -p /backup/minecraft
2. Создайте поддиректории:
sudo mkdir -p /backup/minecraft/worlds
sudo mkdir -p /backup/minecraft/plugins
sudo mkdir -p /backup/minecraft/configs
sudo mkdir -p /backup/minecraft/logs
3. Установите права доступа:
sudo chown -R minecraft:minecraft /backup/minecraft
sudo chmod -R 755 /backup/minecraft
Настройка ротации бэкапов
1. Создайте скрипт ротации:
sudo nano /usr/local/bin/backup-rotation.sh
2. Добавьте содержимое:
#!/bin/bash BACKUP_DIR="/backup/minecraft" RETENTION_DAYS=7 # Удаление старых бэкапов find $BACKUP_DIR -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete find $BACKUP_DIR -name "*.zip" -mtime +$RETENTION_DAYS -delete # Удаление пустых директорий find $BACKUP_DIR -type d -empty -delete echo "Backup rotation completed: $(date)"
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/backup-rotation.sh
4. Создание скрипта бэкапа
Базовый скрипт бэкапа
1. Создайте основной скрипт бэкапа:
sudo nano /usr/local/bin/minecraft-backup.sh
2. Добавьте содержимое:
#!/bin/bash
# Настройки бэкапа
BACKUP_DIR="/backup/minecraft"
SERVER_DIR="/opt/minecraft"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/minecraft-backup.log"
# Функция логирования
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# Проверка доступности сервера
if [ ! -d "$SERVER_DIR" ]; then
log_message "ERROR: Server directory not found: $SERVER_DIR"
exit 1
fi
log_message "Starting Minecraft backup..."
# Создание директории для бэкапа
mkdir -p $BACKUP_DIR/$DATE
# Остановка сервера для бэкапа
log_message "Stopping Minecraft server..."
systemctl stop minecraft-spigot 2>/dev/null || true
systemctl stop minecraft-paper 2>/dev/null || true
systemctl stop minecraft-bukkit 2>/dev/null || true
# Ожидание полной остановки
sleep 10
# Создание архива мира
log_message "Backing up world data..."
if [ -d "$SERVER_DIR/world" ]; then
tar -czf $BACKUP_DIR/$DATE/world-$DATE.tar.gz -C $SERVER_DIR world
log_message "World backup completed"
fi
# Создание архива плагинов
log_message "Backing up plugins..."
if [ -d "$SERVER_DIR/plugins" ]; then
tar -czf $BACKUP_DIR/$DATE/plugins-$DATE.tar.gz -C $SERVER_DIR plugins
log_message "Plugins backup completed"
fi
# Создание архива конфигурации
log_message "Backing up configuration..."
tar -czf $BACKUP_DIR/$DATE/config-$DATE.tar.gz -C $SERVER_DIR server.properties bukkit.yml spigot.yml paper-global.yml 2>/dev/null || true
log_message "Configuration backup completed"
# Создание архива логов
log_message "Backing up logs..."
if [ -d "$SERVER_DIR/logs" ]; then
tar -czf $BACKUP_DIR/$DATE/logs-$DATE.tar.gz -C $SERVER_DIR logs
log_message "Logs backup completed"
fi
# Создание полного архива
log_message "Creating full backup archive..."
tar -czf $BACKUP_DIR/minecraft-full-backup-$DATE.tar.gz -C $BACKUP_DIR $DATE
log_message "Full backup archive created"
# Удаление временной директории
rm -rf $BACKUP_DIR/$DATE
# Запуск сервера
log_message "Starting Minecraft server..."
systemctl start minecraft-spigot 2>/dev/null || systemctl start minecraft-paper 2>/dev/null || systemctl start minecraft-bukkit 2>/dev/null || true
log_message "Minecraft backup completed successfully"
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/minecraft-backup.sh
5. Настройка инкрементальных бэкапов
Создание скрипта инкрементального бэкапа
1. Создайте скрипт инкрементального бэкапа:
sudo nano /usr/local/bin/minecraft-incremental-backup.sh
2. Добавьте содержимое:
#!/bin/bash
# Настройки инкрементального бэкапа
BACKUP_DIR="/backup/minecraft"
SERVER_DIR="/opt/minecraft"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/minecraft-incremental-backup.log"
SNAPSHOT_DIR="$BACKUP_DIR/snapshots"
# Функция логирования
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# Создание директории для снапшотов
mkdir -p $SNAPSHOT_DIR
log_message "Starting incremental backup..."
# Создание снапшота мира
if [ -d "$SERVER_DIR/world" ]; then
rsync -av --delete --link-dest=$SNAPSHOT_DIR/latest $SERVER_DIR/world/ $SNAPSHOT_DIR/world-$DATE/
ln -sfn $SNAPSHOT_DIR/world-$DATE $SNAPSHOT_DIR/latest
log_message "World incremental backup completed"
fi
# Создание снапшота плагинов
if [ -d "$SERVER_DIR/plugins" ]; then
rsync -av --delete --link-dest=$SNAPSHOT_DIR/plugins-latest $SERVER_DIR/plugins/ $SNAPSHOT_DIR/plugins-$DATE/
ln -sfn $SNAPSHOT_DIR/plugins-$DATE $SNAPSHOT_DIR/plugins-latest
log_message "Plugins incremental backup completed"
fi
log_message "Incremental backup completed successfully"
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/minecraft-incremental-backup.sh
6. Настройка удаленных бэкапов
Установка rsync
1. Убедитесь, что rsync установлен:
sudo apt install -y rsync
Создание скрипта удаленного бэкапа
1. Создайте скрипт удаленного бэкапа:
sudo nano /usr/local/bin/minecraft-remote-backup.sh
2. Добавьте содержимое:
#!/bin/bash
# Настройки удаленного бэкапа
BACKUP_DIR="/backup/minecraft"
REMOTE_HOST="backup.example.com"
REMOTE_USER="backup"
REMOTE_DIR="/backup/minecraft"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/minecraft-remote-backup.log"
# Функция логирования
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
log_message "Starting remote backup..."
# Синхронизация с удаленным сервером
rsync -avz --delete --progress $BACKUP_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/
if [ $? -eq 0 ]; then
log_message "Remote backup completed successfully"
else
log_message "ERROR: Remote backup failed"
exit 1
fi
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/minecraft-remote-backup.sh
Настройка SSH ключей
1. Создайте SSH ключ для бэкапа:
sudo -u minecraft ssh-keygen -t rsa -b 4096 -f /home/minecraft/.ssh/backup_key -N ""
2. Скопируйте публичный ключ на удаленный сервер:
sudo -u minecraft ssh-copy-id -i /home/minecraft/.ssh/backup_key.pub backup@backup.example.com
7. Настройка расписания бэкапов
Настройка cron
1. Отредактируйте crontab:
sudo crontab -e
2. Добавьте задачи бэкапа:
# Minecraft backups # Полный бэкап каждый день в 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/minecraft-remote-backup.sh # Ротация бэкапов каждый день в 5:00 0 5 * * * /usr/local/bin/backup-rotation.sh
Настройка уведомлений
1. Создайте скрипт уведомлений:
sudo nano /usr/local/bin/backup-notification.sh
2. Добавьте содержимое:
#!/bin/bash
# Настройки уведомлений
EMAIL="admin@example.com"
LOG_FILE="/var/log/minecraft-backup.log"
# Проверка последнего бэкапа
LAST_BACKUP=$(tail -1 $LOG_FILE | grep "completed successfully")
if [ -z "$LAST_BACKUP" ]; then
echo "Minecraft backup may have failed. Check logs: $LOG_FILE" | mail -s "Minecraft Backup Alert" $EMAIL
fi
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/backup-notification.sh
4. Добавьте в crontab:
0 6 * * * /usr/local/bin/backup-notification.sh
8. Мониторинг бэкапов
Создание скрипта мониторинга
1. Создайте скрипт мониторинга:
sudo nano /usr/local/bin/backup-monitor.sh
2. Добавьте содержимое:
#!/bin/bash
# Мониторинг бэкапов
BACKUP_DIR="/backup/minecraft"
LOG_FILE="/var/log/backup-monitor.log"
# Проверка размера бэкапов
BACKUP_SIZE=$(du -sh $BACKUP_DIR | awk '{print $1}')
echo "[$(date)] Backup size: $BACKUP_SIZE" >> $LOG_FILE
# Проверка количества бэкапов
BACKUP_COUNT=$(find $BACKUP_DIR -name "*.tar.gz" | wc -l)
echo "[$(date)] Backup count: $BACKUP_COUNT" >> $LOG_FILE
# Проверка последнего бэкапа
LAST_BACKUP=$(find $BACKUP_DIR -name "*.tar.gz" -type f -printf '%T@ %p\n' | sort -n | tail -1 | awk '{print $2}')
if [ ! -z "$LAST_BACKUP" ]; then
LAST_BACKUP_TIME=$(stat -c %Y "$LAST_BACKUP")
CURRENT_TIME=$(date +%s)
TIME_DIFF=$((CURRENT_TIME - LAST_BACKUP_TIME))
if [ $TIME_DIFF -gt 86400 ]; then
echo "[$(date)] WARNING: Last backup is older than 24 hours" >> $LOG_FILE
fi
fi
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/backup-monitor.sh
4. Добавьте в crontab:
*/30 * * * * /usr/local/bin/backup-monitor.sh
9. Восстановление из бэкапа
Создание скрипта восстановления
1. Создайте скрипт восстановления:
sudo nano /usr/local/bin/minecraft-restore.sh
2. Добавьте содержимое:
#!/bin/bash
# Скрипт восстановления из бэкапа
BACKUP_DIR="/backup/minecraft"
SERVER_DIR="/opt/minecraft"
RESTORE_DATE=$1
if [ -z "$RESTORE_DATE" ]; then
echo "Usage: $0 <backup_date>"
echo "Available backups:"
ls -la $BACKUP_DIR/*.tar.gz | awk '{print $9}' | sed 's/.*minecraft-full-backup-//' | sed 's/.tar.gz//'
exit 1
fi
BACKUP_FILE="$BACKUP_DIR/minecraft-full-backup-$RESTORE_DATE.tar.gz"
if [ ! -f "$BACKUP_FILE" ]; then
echo "Backup file not found: $BACKUP_FILE"
exit 1
fi
echo "Stopping Minecraft server..."
systemctl stop minecraft-spigot 2>/dev/null || true
systemctl stop minecraft-paper 2>/dev/null || true
systemctl stop minecraft-bukkit 2>/dev/null || true
echo "Creating backup of current server..."
tar -czf $BACKUP_DIR/current-server-backup-$(date +%Y%m%d_%H%M%S).tar.gz -C $SERVER_DIR .
echo "Restoring from backup: $BACKUP_FILE"
tar -xzf $BACKUP_FILE -C $BACKUP_DIR
tar -xzf $BACKUP_DIR/$RESTORE_DATE/world-$RESTORE_DATE.tar.gz -C $SERVER_DIR
tar -xzf $BACKUP_DIR/$RESTORE_DATE/plugins-$RESTORE_DATE.tar.gz -C $SERVER_DIR
tar -xzf $BACKUP_DIR/$RESTORE_DATE/config-$RESTORE_DATE.tar.gz -C $SERVER_DIR
echo "Starting Minecraft server..."
systemctl start minecraft-spigot 2>/dev/null || systemctl start minecraft-paper 2>/dev/null || systemctl start minecraft-bukkit 2>/dev/null || true
echo "Restore completed successfully"
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/minecraft-restore.sh
10. Устранение неполадок
Частые проблемы
1. Бэкап не создается:
- Проверьте права доступа к директориям
- Проверьте свободное место на диске
- Проверьте логи cron
2. Проблемы с удаленным бэкапом:
- Проверьте SSH соединение
- Проверьте права доступа к удаленному серверу
- Проверьте настройки rsync
3. Проблемы с восстановлением:
- Проверьте целостность архивов
- Проверьте права доступа к файлам
- Проверьте совместимость версий
Диагностика
1. Проверка статуса cron:
sudo systemctl status cron
2. Проверка логов бэкапа:
tail -f /var/log/minecraft-backup.log
3. Проверка размера бэкапов:
du -sh /backup/minecraft
4. Проверка расписания cron:
sudo crontab -l
5. Тестирование скриптов:
sudo /usr/local/bin/minecraft-backup.sh
Заключение
Автоматические бэкапы Minecraft сервера успешно настроены! Теперь у вас есть надежная система резервного копирования с возможностями полных, инкрементальных и удаленных бэкапов.
Для размещения ваших Minecraft серверов с настроенными бэкапами на надежном хостинге рекомендуем воспользоваться услугами ARK-HOSTER.RU:
- Выделенные серверы - для высоконагруженных серверов с большими объемами данных
- VPS/VDS серверы - для небольших и средних серверов
Наши специалисты помогут с настройкой системы бэкапов и обеспечением безопасности ваших данных!