Решил полностью отказаться от использования ispmanager, ибо ресурсы занимает, а используется только для одного — резервного копирования данных. Но раз это можно сделать собственноручно, то держать панель на сервере для десяти сайтов вообще нет смысла.
А потому первейшей задачей становится создание резервных копий баз данных mysql. Базы небольшие по размеру, поэтому будет использоваться самый простейший вариант бэкапов — создание архивов и размещение их в определённой папке сервера.
Конечно, куда надёжней было бы отправлять бэкап по sftp куда-нибудь на другой сервер в другом дата-центре (и стране, чего уж там), но поскольку мои сайты меняются пару раз в месяц, то скачивание бэкапов раз в два дня нельзя назвать тяжёлым занятием. :)
Опыта в написании скриптов на Bash у меня не было до этого момента. Но разобраться не составило труда, учитывая многочисленные примеры скриптов резервного копирования mysql на различных сайтах об администрировании серверов.
Сам скрипт mysqlbackup.sh:
#!/bin/bash #Инициализируем переменные TMPDIR="sqlfiles" BACKUPDIR="/storage" USER="root" PASS="xxx" TIMEY=$(date +%Y-%m-%d) #Проверяем наличие папки для бэкапов if [ ! -d "$BACKUPDIR" ]; then mkdir -m 0700 "$BACKUPDIR" fi #Проверяем наличие временного каталога if [ ! -d "$BACKUPDIR/$TMPDIR" ]; then mkdir -m 0700 "$BACKUPDIR/$TMPDIR" fi #Сохраняем копии cd "$BACKUPDIR/$TMPDIR" for database in `mysql -s -r -e 'SHOW DATABASES' | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v mysql`; do mysqldump $database > $database.sql;done #Создаём архив cd "$BACKUPDIR" tar -cjf databases-"$TIMEY".tbz2 "$TMPDIR" chmod 0600 databases-"$TIMEY".tbz2 #Удаляем временную папку rm -r $TMPDIR echo "Базы данных сохранены!" exit 1
Работа с mysql выполняется непосредственно от пользователя root, так как он имеет доступ сразу ко всем базам данных.
Из бэкапа исключаются базы данных information_schema, mysql, performance_schema. Затем все базы помещаются в bzip2-архив и складируются в определённую папку, откуда их потом можно скачать.
В планировщике Cron прописывается задание на выполнение скрипта раз в сутки, например, в час ночи.
00 01 * * * sh ~/mysqlbackup.sh
Если в настройках крона задан верный email, то на почту придёт отчёт, в котором будут перечислены сохранённые базы данных.
P.S. Также можно создавать резервные копии и несколько раз в день. Для этого нужно в имени архива указывать ещё и время создания, чтобы файл не перезаписывался.