Часто требуется периодически сохранять дамп базы данных в определенную папку на сервере.
Я предлагаю свой вариант решения задачи.
Для начала нам нужны исходные данные: хост базы данных, название, логин и пароль пользователя базы данных, логин пользователя линукс и адрес папки складирования файлов.
Для начала зайдем под пользователем линукс (я показываю вариант из-под root)
su linuxuser
Теперь создадим локальный файл конфигурации MySQL с реквизитами доступа к базе данных:
nano .my.cnf
Вставим туда следующие данные:
[mysqldump] host = 127.0.0.1 user=backup password="123AAABBB"
где host — это адрес базы данных, user — это пользователь базы данных, password — это пароль пользователя базы данных.
Сохраняем локальный файл конфигурации MySQL.
Создаем файл bash-скрипта:
nano backup-sql.sh
вставляем туда следущий код:
#!/bin/bash DBNAME=backup_db DATE=$(date +"%Y-%m-%d_%H-%M") mysqldump ${DBNAME} | gzip > /home/backup-sql/${DBNAME}_$DATE.sql.gz
где backup_db — это название базы MySQL, /home/backup-sql/ — папка для хранения дампов
Сохраняем файл.
Разрешам выполнение файла
chmod +x backup-sql.sh
и запускаем скрипт:
bash backup-sql.sh
Дожидаемся окончания работы скрипта и смотрим папку, где дожнен появиться дамп базы MySQL
ls /home/backup-sql
в моем случае файл выглядел так: backup_db_2025-06-16_20-16.sql.gz, где сначала идет название базы, затем дата и время создания дампа. Для периодического запуска скрипта, его можно записать в crontab.
crontab -e
Мне, например, достаточно получаеть дамп базы данных 1 раз в неделю, поэтому я вставляю такю запись в crontab:
@weekly /home/linuxuser/backup-sql.sh
где /home/linuxuser/backup-sql.sh — это путь до скрипта