Вирішив повністю відмовитися від використання 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, то на пошту прийде звіт, в якому будуть перераховані збережені бази даних.
PS Також можна створювати резервні копії та кілька разів в день. Для цього потрібно в імені архіву вказувати ще й час створення, щоб файл не перезаписувати.
Щось в скрипті ніде не використовується пароль до mysql
Вірно, упущений момент. Але лише тому, що у себе використовую файл .my.cnf в домашній папці root. Там прописаний логін і пароль в такому форматі:
Треба було додати це в пост раніше. :)
Спасибі, дізнався про my.cnf :)
Мій варіант реалізації, може кому стане в нагоді:
https://github.com/wdda/backupper_mysql