Bash-скрипт бэкапа MySQL на Яндекс Диск (дамп, gzip-сжатие и автоочистка)
Готовый 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`. Если команда завершилась без ошибок, архив не поврежден.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.