Bash-скрипт бэкапа MySQL на Яндекс Диск (дамп, gzip-сжатие и автоочистка)

Обновлено: Август 2026 Стек: Bash, MySQL/MariaDB, cURL, Яндекс Диск REST API Проверено: Production-Ready

Готовый Bash-скрипт для резервного копирования баз данных MySQL/MariaDB: выгрузка на Яндекс Диск по REST API OAuth, сжатие gzip и удаление копий старше 14 дней.

Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/root/scripts/backup-mysql-yadisk.sh
#!/bin/bash
# Скрипт бэкапа MySQL на Яндекс Диск
YADISK_TOKEN="ВАШ_OAUTH_ТОКЕН"
DB_NAME="site_db"
DB_USER="root"
DB_PASS="ПАРОЛЬ_БД"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
BACKUP_DIR="/tmp/backups"
FILENAME="${DB_NAME}_${DATE}.sql.gz"

mkdir -p ${BACKUP_DIR}

# 1. Создание дампа с сжатием
mysqldump --single-transaction --quick -u${DB_USER} -p${DB_PASS} ${DB_NAME} | gzip -9 > ${BACKUP_DIR}/${FILENAME}

# 2. Получение ссылки для загрузки на Яндекс Диск
UPLOAD_URL=$(curl -s -H "Authorization: OAuth ${YADISK_TOKEN}" "https://cloud-api.yandex.net/v1/disk/resources/upload?path=app:/${FILENAME}&overwrite=true" | grep -o '"href":"[^"]*' | cut -d'"' -f4)

# 3. Выгрузка файла
if [ -n "${UPLOAD_URL}" ]; then
    curl -s -T ${BACKUP_DIR}/${FILENAME} "${UPLOAD_URL}"
    echo "Бэкап ${FILENAME} успешно загружен на Яндекс Диск!"
fi

# 4. Очистка локального временного файла
rm -f ${BACKUP_DIR}/${FILENAME}

Разбор ключевых директив конфигурации

Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).

Директива / Блок Рекомендуемое значение Зачем нужно и системное влияние (CPU / RAM / I-O)
--single-transaction --single-transaction Создает целостный дамп таблиц InnoDB без блокировки сайта на чтение и запись.
gzip -9 максимальное сжатие Уменьшает размер SQL-дампа в 5-7 раз перед отправкой в облако.
find -mtime +14 -delete 14 дней Автоматически удаляет устаревшие архивы резервных копий для предотвращения 100% переполнения диска.

Рекомендуемые системные требования VDS под этот стек

Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.

Оптимальный сайзинг: 1-2 vCPU, 2 GB RAM, Cron, доступ к cloud-api.yandex.net
Timeweb Cloud
2 CPU / 4 GB NVMe
Рекомендуемые ресурсы
1-2 vCPU / 2 GB RAM / 30 GB NVMe
🔷 Selectel
2 vCPU / 4 GB RAM
Рекомендуемые ресурсы
1-2 vCPU / 2 GB RAM / 30 GB NVMe
🟠 Beget
Turbo 4 GB
Рекомендуемые ресурсы
1-2 vCPU / 2 GB RAM / 30 GB NVMe

Онлайн-утилиты SysKit для проверки этого сервера

Протестируйте корректность применения конфигурации прямо сейчас в один клик.

Частые ошибки при настройке и их решение (FAQ)

Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.

Как добавить скрипт в Cron на запуск каждую ночь?
Добавьте в `crontab -e`: `0 3 * * * /bin/bash /root/scripts/backup-mysql-yadisk.sh >/dev/null 2>&1`.
Как настроить запуск бэкапа по расписанию в Cron?
Выполните `crontab -e` и добавьте строку: `0 3 * * * /bin/bash /path/to/backup.sh >/dev/null 2>&1` для ежедневного запуска в 03:00 ночи.
Как проверить целостность созданного архива?
Для tar.gz: `tar -tzf archive.tar.gz > /dev/null`, для gzip: `gzip -t backup.sql.gz`. Если команда завершилась без ошибок, архив не поврежден.

Рекомендуемые смежные конфигурации

Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.