Joomla: организация автоматического бекапа сайта на виртуальном хостинге Агава |
![]() |
Добавил(а) microsin |
Попытался найти в CPanel agava.ru возможность настройки автоматического бекапа сайта. Хотелось получить примерно то же самое, что без проблем можно настроить на хостинге FastVPS (тариф OVZ-3) прямо через WEB-интерфейс. Нужно, чтобы каждую ночь создавался дамп базы MySQL и каждую неделю создавался полный архив сайта. Архивы должны автоматически выкачиваться на удаленный сервер, и затем стираться с виртуального хостинга. Однако ничего не получилось. Пришлось написать в техподдержку. Очень бы хотелось иметь возможность простого создания автоматического бекапа, чтобы не заморачиваться с командной строкой и shell-скриптами. Именно такого, который описывается в справке по CPanel. Нужно, чтобы каждые сутки ночью автоматически создавался бекап баз, и каждую неделю - полный бекап домашнего каталога. Само собой, с автоматическим перемещением архивов на удаленный сервер (по протоколу SCP или FTP) - чтобы не занимать ограниченное пространство домашнего каталога. Вопрос следующий: можно ли настроить что-то подобное (автоматический бекап) через CPanel Agava? Если можно, то как (дайте пожалуйста ссылку на инструкцию), а если нельзя - что посоветуете для простой организации такого бекапа? curl "https://cp44.agava.net:2083//frontend/ax/backup/dofullbackup.html" --user ПОЛЬЗОВАТЕЛЬ:ПАРОЛЬ --basic -k; В результате в домашнем каталоге будет создан архив: backup-ДАТА.ВРЕМЯ.ПОЛЬЗОВАТЕЛЬ.tgz Далее Вы можете так же через cron загрузить резервную копию на другой сервер (удалив копию после успешной загрузки): rsync -avH --progress --remove-source-files ~/backup-* ПОЛЬЗОВАТЕЛЬ@СЕРВЕР:~/ Для создания резервных копий баз данных можете использовать следующую команду: mysqldump --opt -Q -uПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ ИМЯ_БД > ИМЯ_ДАМПА.sql Создадим скрипты agava-backup-daily.sh и agava-backup-weekly.sh, и положим в папку myscrfolder (все названия файлов и папок здесь указаны только для примера). Создайте так же временную папку mybackupdir, где будет создаваться архив дампа MySQL. Будьте внимательны с назначением прав доступа в создаваемые папки, поскольку там хранится секретная информация (пароли доступа к серверу FTP и базам данных MySQL), права на чтение, изменение и запуск должны быть только у владельца. Вы уже наверное догадались, что один скрипт будет использоваться для ежедневного бекапа (он будет бекапить дампы баз MySQL), а другой для еженедельного бекапа (он будет делать архив полной копии домашнего каталога пользователя, который и содержит все папки и файлы сайта). К сожалению, мое хранилище бекапов не поддерживало ssh, поэтому от rsync пришлось отказаться, и передавать файлы архива по протоколу FTP. [Содержимое agava-backup-daily.sh] #!/bin/sh BACKUPDIR=mybackupdir ftpremotesrv=backupovz3.fastvps.ru ftpremoteuser=ovzXXXXX ftpremotepassw=passXXXXX arcmysql=mysite.ru-sql-dump.tar ######################################### echo "1. Создание дампа базы данных mysite_joodb1." ######################################### ######################################### ######################################### Некоторые пояснения по ежедневному скрипту. Дамп базы данных MySQL делается с помощью утилиты mysqldump. Для подключения к MySQL нужны специальный логин DBLOGIN и пароль DBPASSW, они могут не совпадать с логином и паролем локального пользователя shell. Обратите также внимание на опцию --default-character-set, в ней задается кодировка символов, в которой будет создан дамп базы. Кодировка должна использоваться такая же, какая используется на Вашем сайте. Для автоматического именования архивов по дате используется вычисляемая переменная prefixdate. Путь в нужный каталог/папку внешнего сервера ftp указывается через remoteftpfolder. [Содержимое agava-backup-weekly.sh] #!/bin/sh agavauser=agavauserXXXXXX agavapassw=agavapassXXXXXX BACKUPDIR=mybackupdir ftpremotesrv=backupovz3.fastvps.ru ftpremoteuser=ovzXXXXX ftpremotepassw=passXXXXX arcmysql=mysite.ru-sql-dump.tar archome=mysite.ru-homedir.tgz ######################################### ######################################### ######################################### ######################################### ######################################### ######################################### Еженедельный скрипт отличается от ежедневного только дополнительным запуском команды curl, которая запускает скрипт бекапа CPanel. Проверить работу скриптов можно командами: $ cd ~ Еженедельный скрипт будет выполняться намного дольше, поскольку он будет делать архив всего домашнего каталога сайта. Время выполнения зависит от занятого дискового пространства файлами домашнего каталога. Учитывайте этот факт при планировании времени выполнения задания (см. Шаг 2). После завершения архивирования файлы архивов будут выгружены на удаленный ftp-сервер. Вот пример завершения тестового запуска еженедельного скрипта, когда идет выгрузка архивов на удаленный сервер FTP: Uploading files using ftp... [Шаг 2: добавление заданий в планировщик cron] Для автоматического запуска заданий в нужное время нам понадобится планировщик cron [1]. Можно просмотреть/отредактировать задания вручную через ssh-консоль (командами crontab -l, crontab -e), как описано в [2]. Однако это удобнее и понятнее сделать через CPanel [6]. Откройте браузер, введите ссылку CPanel, введите логин и пароль. Найдите панель Дополнительно -> Планировщик заданий. Зайдите в планировщик, нажмите кнопку Стандартный. Настройте два задания примерно так, как показано на скриншоте. После настройки заданий можете указать свой адрес email, куда будет отправлено оповещение о результате завершения бекапа. Все, что было выведено в скрипте задания командой echo, попадет в текст письма - это удобно использовать для диагностических сообщений. Придет письмо наподобие следующего: Просмотреть назначенные задания cron можно также в командной строке ssh-шелла: $ crontab -l В этом примере мы назначили два задания, одно будет выполняться в 00:15 минут каждый день (agava-backup-daily.sh), а второе в 00:30 каждый 6-й день недели (в субботу). После этого останется только следить за свободным местом на сервере FTP (куда заливаются бекапы), и периодически удалять старые архивы. [Часто задаваемые вопросы, FAQ] Q001. Создал файл скрипта, но запустить его не могу (ошибка Permission denied). [Ссылки] 1. FreeBSD: назначенные задания (cron, crontab). |