Joomla: использование crontab для backup |
![]() |
Добавил(а) microsin | |||
В большинстве случаев хостинга на сервере, где расположен сайт, стоит FreeBSD или другая *nix-система. Для автоматического запуска заданий здесь обычно используют crontab. Сохранение информации вашего сайта - дело безусловно необходимое по многим причинам. Это сбережет результаты Вашей работы от вредного воздействия многих непредвиденных обстоятельств - отказ оборудования сервера, взлом системы хакером, какие-то Ваши неосторожные действия. Было бы неплохо часто изменяющиеся данные (например, база данных MySQL, в которой хранятся данные Вашего сайта на Joomla) архивировать каждый день, а другие данные и файлы, которые меняются нечасто или имеют большой объем, архивировать каждый месяц. В название архива было бы удобно добавлять дату создания архива, тогда эти архивы можно было бы хранить в одной папке. Далее опишу создание такой системы по пунктам (предполагается, что хостинг у вас на *nix системе, например FreeBSD). 1. Для скриптов лучше в домашнем каталоге завести специальную папку, например shscripts, а для хранения архивов бэкапов - другую, например arcbackup. Создадим эти папки. 2. Для скрипта в папке shscripts создадим файл backup.sh, в нем будут производится все необходимые действия. Вот содержимое этого файла:
Поподробнее опишу, что тут и зачем нужно. 3. Меняем атрибуты у файла shscripts/backup.sh, чтобы он стал исполняемым. Удобнее всего это сделать с помощью Total Commander, подключившись к сайту по ftp (для владельца должна стоять галочка Выполнение): Другой способ - использование команды chmod. 4. Создаем задание для кронтаба, которое будет запускать наш скрипт. Вспомним немного теории по кронтабу. Для просмотра заданий используют команду crontab -l:
В этом примере настроено одно задание - каждый день в 14.00 запустить задание - скрипт scripts/backup/backup.sh. Каждая строка, начинающаяся на последовательность типа "0 14 * * * command_or_script" представляет отдельное задание. Задания редактируются командой crontab -e (после запуска команды открывается окно текстового редактора, обычно это редактор vi):
Текстовый редактор vi имеет ужасный для Windows-пользователей интерфейс, но по традициям этот редактор присутствует во всех системах *nix. Пользоваться этим редактором довольно просто, если выучить несколько нехитрых условностей. Я не буду здесь расписывать все подробно, поскольку и сам всего не знаю, ограничусь необходимым минимумом: - vi имеет два режима - командный и редактирования текста. В командном режиме можно удалять символы, строки, записать файл на диск и выйти из программы, в текстовом режиме можно редактировать текст. 5. После этих действий у Вас будет настроено автоматическое архивирование сайта. К этой процедуре неплохо также добавить автоматическую перекачку архивов на другой компьютер, тогда уже можно совсем ни о чем не беспокоиться. Вариантов тут много - можно воспользоваться утилитами командной строки scp или sftp, добавив вызов их в скрипт. Для этого нужно на удаленной машине, куда будет производится копирование, установить сервер SSH и настроить ключи. Как это сделать, можно прочитать в статье [1]. Здесь я приведу пример использования простого клиента ftp на машине с Windows XP. Процесс по шагам: - делаем нехитрый бат-файл ftpdnld.bat с таким содержимым: ftp -i -s:ftpcmd.txt - создаем текстовый файл ftpcmd.txt с таким содержимым: open ftp_your_hosting_site.ru username userpass binary lcd c:\dir_backup mget arcbackup/* mdelete arcbackup/* quit Имя ftp_your_hosting_site.ru задает сервер, к которому будем подключаться. Здесь username и userpass - логин и пароль на доступ по ftp к содержимому сайта, обычно они совпадают с логином и паролем *nix шелла. Команда binary переключает режим (по умолчанию он текстовый, и если режим не поменять на бинарный, то скачанные архивы слегка покоцаются). Команда lcd меняет текущую папку на Windows-машине для клиента ftp (туда будут сыпаться скачанные архивы). Команда mget скачивает архивы из указанной ftp-папки в текущую, а команда mdelete удаляет архивы с ftp, освобождая место. - создаем назначенное задание, которое будет запускать ftpdnld.bat каждый день в нужное время (под Windows это делается совсем просто). [Ссылки] |