80 lines
3.1 KiB
Bash
80 lines
3.1 KiB
Bash
#!/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 -"
|