IPB

Здравствуйте, гость ( Вход | Регистрация )

> Правила форума

Все ссылки на сторонние ресурсы, за исключением офсайтов программ, должны оформляться с помошью тега скрытого текста - [hide=1]Ссылка[/hide]. Если я замечу флуд с целью набора постов для того, чтобы увидеть скрытый текст - то буду удалять такие аккаунты и на дальнейшую помощь от меня можете просто никогда не рассчитывать. Хорошо подумайте, прежде чем флудить, поскольку наша сборка довольно специфична и без квалифицированной помощи Вам просто не обойтись.
Прежде чем задать вопрос об ошибке настоятельно рекомендую прочитать статью по этой ссылке, как правильно задавать вопросы, чтобы получить правильный и быстрый ответ - http://www.chiark.greenend.org.uk/~sgtatham/bugs-ru.html

 
Closed TopicStart new topic
> Автобэкап базы данных, Автоматизация бэкапа базы форума при помощи CRON
Starichok Che
18.05.2007 - 09:57
Сообщение #1



Главный админ
Group Icon
Группа: Администраторы
Админ - это не только ценный мех...
Регистрация: 24.05.2002
Из: WWW.BESTFILEZ.NET

Пользователь №: 1




У заботливых администраторов форумов актуальна задача своевременного бэкапа базы своего форума, особенно если тарифный план не предусматривает бэкапа хостерами. Имея CPanel и доступ к CRON можно автоматизировать этот процесс и снять с себя часть забот и хлопот.
Можно написать скрипт автобэкапа базы. Рассмотрим один из возможных вариантов ниже. Если у Вас на сервере установлен Linux и CPanel - то Вам просто нужно Подставить свои данные, вместо данных, заключённых в <...>.
Для работы Вам необходимо создать папку mybackup с правами 755 в корне Вашего аккаунта. Конечно имя папки может быть любым, по вашему выбору. Не забудьте только изменить всё это в шаблоне скрипта. И написать дополнительно файл, закрывающий доступ на сайт во время работы скрипта для всех юзеров. Создадим папку. Например пусть это будет папка /home/<имя аккаунта>/mybackup. Поместим туда файл нашего скрипта для крона, который напишем в блокноте или подобном текстовом редакторе, который мы назовём например mybackup.crn с правами на выполнение, т.е. CHMOD 755, вы котором мы напишем код для командной линии. Вот его примерное содержание.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rename .php .bak /home/<имя_вашего_аккаунта>/public_html/forums/index.php
rename siteclosed index /home/<имя_вашего_аккаунта>/public_html/forums/siteclosed.php
#
rename .php .bak /home/<имя_вашего_аккаунта>/public_html/index.php
rename siteclosed index /home/<имя_вашего_аккаунта>/public_html/siteclosed.php
#
mysqldump --user=<имя_вашего_аккаунта> --password=<ваш_пароль> --opt <имя_вашей_базы> | gzip > /home/<имя_вашего_аккаунта>/mybackup/dbsitebackupw_`date +%Y_%m_%d`.gz
#
tar -cf /home/<имя_вашего_аккаунта>/mybackup/tarbackupw_`date +%Y_%m_%d`.tar `find /home/<имя_вашего_аккаунта>/public_html/forums/uploads/ -type f -mtime -7`
#
gzip /home/<имя_вашего_аккаунта>/mybackup/tarbackupw_`date +%Y_%m_%d`.tar
#
rename index siteclosed /home/<имя_вашего_аккаунта>/public_html/index.php
rename .bak .php /home/<имя_вашего_аккаунта>/public_html/index.bak
#
rename index siteclosed /home/<<имя_вашего_аккаунта>>/public_html/forums/index.php
rename .bak .php /home/<<имя_вашего_аккаунта>>/public_html/forums/index.bak
#
exit
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
И конечно же не забудем написать наш файлик siteclosed.php .Пишем два одинаковых файлика и помещаем один в папку public_html , а второй в папку forums, где установлен Ваш форум. Содержание его Вы можете изменять по своему усмотрению и оформлять его сколь угодно красиво на Ваш вкус. В простейшем варианте его содержание будет такое.
----------------------------------------------------------------------------------------------------------------------------------
<?php
echo " <center> Сайт ненадолго <b>закрыт</b> всвязи с бэкапом базы форума. <br> Извините за причинённые неудобства. Просим Вас немного подождать. Или зайти чуть позже. <br> Администрация. </center> ";
?>
----------------------------------------------------------------------------------------------------------------------------------
Давайте поподробней рассмотрим написанный нами скрипт.
Код
rename .php .bak /home/<имя_вашего_аккаунта>/public_html/forums/index.php
rename siteclosed index /home/<имя_вашего_аккаунта>/public_html/forums/siteclosed.php

В этих первых двух строчках мы закрываем наш форум для пользователей и выводим сообщение из специально написанного нами файла siteclosed.php, который закрывает доступ юзерам на форум в момент бэкапа базы и выводит сообщение о временной недоступности сайта. Для этого переименовываем сначала наши файлы index.php в index.php.bak и переименываем siteclosed.php в index.php
Это необходимо для того. чтобы исключить при бэкапе обращения к базе данных с целью изменения её содержимого во время работы нашего скрипта.

Пошли дальше.
Код
rename .php .bak /home/<имя_вашего_аккаунта>/public_html/index.php
rename siteclosed index /home/<имя_вашего_аккаунта>/public_html/siteclosed.php

Здесь мы проделывем тоже самое, но уже не для форума, а для сайта. Это в случае, если у Вас есть не только форум, но и портал, индексный файл которого находится в корне Вашего сайта, в папке public_html.

Ну а теперь, после того, как сайт и форум закрыты - скрипт начинает бэкапить базу.
Код
mysqldump --user=<имя_вашего_аккаунта> --password=<ваш_пароль> --opt <имя_вашей_базы> | gzip > /home/<имя_вашего_аккаунта>/mybackup/dbsitebackupw_`date +%Y_%m_%d`.gz

Эта строка даёт команду mysqldamp начать бэкап нашей базы данных в сжатом формате .gz. Здесь есть два важных момента. Архивированный дамп базы мы сохраняем в корне аккаунта, в папке mybackup, что не позволяет увидеть его, набрав URL в браузере. Это для повышения секретности, чтобы посторонний не смог воспользоваться Вашей базой. И второе, к названию файла бэкапа добавляется дата и время создания в днях. Поэтому не следует запускать наш бэкап чаще, чем один раз в сутки.

Далее
Код
tar -cf /home/<имя_вашего_аккаунта>/mybackup/tarbackupw_`date +%Y_%m_%d`.tar `find /home/<имя_вашего_аккаунта>/public_html/forums/uploads/ -type f -mtime -7`

gzip /home/<имя_вашего_аккаунта>/mybackup/tarbackupw_`date +%Y_%m_%d`.tar

А вот здесь мы архивируем файлы в папке форума upload, которые были изменены за последнюю неделю в один архив с уникальным именем с датой архивации и помещаем его в нашу папку mybackup.
Код
rename index siteclosed /home/<имя_вашего_аккаунта>/public_html/index.php
rename .bak .php /home/<имя_вашего_аккаунта>/public_html/index.bak
#
rename index siteclosed /home/<<имя_вашего_аккаунта>>/public_html/forums/index.php
rename .bak .php /home/<<имя_вашего_аккаунта>>/public_html/forums/index.bak
#
exit
Ну вот, когда скрипт закончил бэкап, мы снова переименовываем наши файлы. открываем доступ на сайт и заканчиваем выполнение скрипта командой exit.

Вы спросите, а как настроить CRON на выполнение этого скрипта? Легче лёгкого.
В панели управления аккаунтом (CPanel) у хостера выбираем закладку CRON. Выбираем Standard Mode.
В текстовом поле, "command to run" введите полный путь до нашего скрипта
('/home/<<имя_вашего_аккаунта>>/mybackup/mybackup.crn').
Затем в выпадающем списке выберите день недели и время выполнения поставленной задачи. Желательно выбирать время, когда на Вашем сайте меньше всего посетителей, обычно это бывает под утро, часа в 4. Следует учитывать, что серверное время может может отличаться от вашей временной зоны.
Вот и всё. Теперь Вы будете иметь еженедельно бэкап вашей базы и данные папки upload в архивированном виде. Вы всегда сможете скачать их к себе на комп и хранить сколь угодно долго.
Можно усложнить этот скрипт, чтобы он высылал Вам на почту архивы или закачивал их на другой FTP сервер, уведомлял на Вашу почту об успешно выполненной задаче, но это уже выходит за рамки данной статьи и возможно позже мы к этому вернёмся.
Не забудьте отредактировать пути, имя базы и пароли на Ваши!!!
Удачи в работе!
User is offlineProfile Card PM
Go to the top of the page
+
Реклама

Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



- Текстовая версия Сейчас: 28.03.2024 - 11:59
]]> ]]>
]]> Яндекс.Метрика ]]>