#!/bin/bash # Скрипт для настройки автоматического бэкапа БД через cron # Запускается дважды в день: в 00:00 и 12:00 set -e SCRIPT_DIR="/var/www/platform/prod" BACKUP_SCRIPT="$SCRIPT_DIR/backup-db-auto.sh" CRON_USER="root" echo "==========================================" echo "Настройка автоматического бэкапа БД" echo "==========================================" echo "" # Проверить, что скрипт существует if [ ! -f "$BACKUP_SCRIPT" ]; then echo "Ошибка: Скрипт $BACKUP_SCRIPT не найден!" exit 1 fi # Сделать скрипт исполняемым chmod +x "$BACKUP_SCRIPT" echo "✓ Скрипт сделан исполняемым" # Создать директорию для бэкапов mkdir -p "$SCRIPT_DIR/backups" echo "✓ Директория для бэкапов создана" # Найти путь к docker (для cron) DOCKER_PATH=$(which docker 2>/dev/null || echo "/usr/bin/docker") # Проверить, есть ли уже запись в crontab # Используем PATH с docker и bash для надежности CRON_CMD="0 0,12 * * * PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin $BACKUP_SCRIPT >> $SCRIPT_DIR/backups/cron.log 2>&1" if crontab -u "$CRON_USER" -l 2>/dev/null | grep -q "$BACKUP_SCRIPT"; then echo "⚠️ Запись в crontab уже существует" echo "" echo "Текущий crontab:" crontab -u "$CRON_USER" -l | grep "$BACKUP_SCRIPT" echo "" read -p "Заменить существующую запись? (y/N): " -n 1 -r echo "" if [[ $REPLY =~ ^[Yy]$ ]]; then # Удалить старую запись crontab -u "$CRON_USER" -l 2>/dev/null | grep -v "$BACKUP_SCRIPT" | crontab -u "$CRON_USER" - # Добавить новую (crontab -u "$CRON_USER" -l 2>/dev/null; echo "$CRON_CMD") | crontab -u "$CRON_USER" - echo "✓ Запись в crontab обновлена" else echo "Отменено. Существующая запись сохранена." exit 0 fi else # Добавить новую запись (crontab -u "$CRON_USER" -l 2>/dev/null; echo "$CRON_CMD") | crontab -u "$CRON_USER" - echo "✓ Запись в crontab добавлена" fi echo "" echo "==========================================" echo "Настройка завершена!" echo "==========================================" echo "" echo "Расписание бэкапов:" echo " - Каждый день в 00:00 (полночь)" echo " - Каждый день в 12:00 (полдень)" echo "" echo "Проверить crontab:" echo " crontab -u $CRON_USER -l" echo "" echo "Просмотр логов бэкапов:" echo " tail -f $SCRIPT_DIR/backups/backup.log" echo " tail -f $SCRIPT_DIR/backups/cron.log" echo "" echo "Удалить автоматический бэкап:" echo " crontab -u $CRON_USER -l | grep -v '$BACKUP_SCRIPT' | crontab -u $CRON_USER -"