Backup сайта с drupalом при наличии shell доступа (инструкция-склерозник)

Главные вкладки

Аватар пользователя blackvl@drupal.org blackvl@drupal.org 29 марта 2007 в 1:58

Компьютер должен работать, а человек - думать

Делать в копьютере что-то руками нужно один раз - задать ему программу.
Этим мы и займемся... на языке скриптов sh

Архивирование сайта на движке drupal состоит из двух задач:

  1. backup базы
  2. backup собственно сайта

Для решения первой задачи используем mysqldump.
Нужно задать следующие параметры:
имя пользователя базы: DBUSER=user
пароль пользователя базы: DBPASS=secret
имя базы: DBNAME=base
имя файла-результата:OUTFILE=backup
Предполагается, что база на localhost, и мы хотим полный бэкап базы - команда выглядит так:
mysqldump -u${DBUSER} -p${DBPASS} ${DBNAME} --opt -Q -r${OUTFILE}.sql
полученный дамп надо запаковать. Лучше использовать то, что заведомо есть на UNIX-хостинге -tar и gzip (gzip понимают и FAR и TotalCommander):
tar -czf ${OUTFILE}.tgz ${OUTFILE}.sql

Обратная процедура - загнать дамп в базу - делается из коммандной строки так:
mysql -uuser -p dbname

  • Сохраните файл например как backup.sh и разрешите ему выполняться: chmod u+x ./backup.sh
  • Поместите его в crontab для выполнения по расписанию
  • строчка #!/bin/sh должна быть самой первой в файле.
  • Комментарии

    Аватар пользователя blackvl@drupal.org blackvl@drupal.org 29 марта 2007 в 9:55

    Конечно, модуль это хорошо, и если не заглядывать в код, напоминает винду и исключает мыслительные процессы в голове и ... добавляет нагрузку на сайт.
    Это просто расширенный вариант моего склерозника (один раз написал - и забыл!), для себя любимого, ну может и кто еще заинтересуется Smile

    Аватар пользователя blackvl@drupal.org blackvl@drupal.org 29 марта 2007 в 15:56

    Ну, если он все-же на php, и выполняется от имени вебсервера, то добавляет, по крайней мере на момент своего выполнения...
    И с ним не придется нянчится при апдейте сайта (включать/отключать, проверять совместимость)? Это вопрос. Я им не пользовался.

    Аватар пользователя inc inc 29 марта 2007 в 21:01

    Большое спасибо за скрипт, но ИМХО одного такого скрипта не достаточно, т.к. через некоторое время бэкапов этих может накопиться огромное количество, и лимит дискового пространства на сервере будет превышен.
    Как Вы с этим боретесь?

    Аватар пользователя axel axel 30 марта 2007 в 2:09

    Можно например так:

     /usr/bin/find /var/backups -type f -ctime +7 -exec rm -f '{}' ';'

    - такая команда удаляет все файлы с датой создания старше 7 дней из директории /var/backups/, можно поместить это в крон

    --
    Администратор сайта «Drupal — Россия»
    на вопросы по Drupal отвечаю только на форумах, не пишите в почту и приватом!

    Аватар пользователя vadbars@drupal.org vadbars@drupal.org 29 марта 2007 в 21:37

    ... причем отправлялась бы на ***gmail.com, а при сбое или повреждении БД восстанавливалась бы оттуда. Smile


    Я ставлю строчку "php_value error_reporting 7" в файл .htaccess, а вы? Smile Полный русский перевод Drupal 5.x и еще некоторых модулей.

    Аватар пользователя Dan Dan 29 марта 2007 в 22:26

    Хостинг dreamhost, свободное странство - 200 Гб, приращение каждую неделю - 1Гб
    Но если база 4 гига, то конечно! (а вот эту базу слать да по пять метров, да на дайлапе!!!)

    Аватар пользователя blackvl@drupal.org blackvl@drupal.org 30 марта 2007 в 9:27

    Ух как много вопросов и ответов... Попробую ответить всем
    To KCEOH - нет никаких сложностей, если в системе есть, например, sendmail ...
    To inc - см. ответ от axel да, что-то типа этого. т.е удалять все старые, время зависит от места.
    To vadbars - да я об этом уже думал... Пока мне проще написать scp -r  "site:/backupdir/" ~/backup (я ж под линухом сижу и дома и на работе)
    To garamond - Многие почтовые системы уже и больше позволяют... а вообще-то с диалапом сложно работать с таким сайтом, да уж и ADSL повсеместно входит в жизнь - пример Курагино - юг красноярского края 100 км на восток от Минусинска (Ленинские места Smile ) сравнительно недавно затащили оптику и начали раздавать ADSL... А в школу УЖЕ раздали!!!
    To ALL: Давайте напишем общими усилиями полный комплекс обслуживания сайта при наличии шелл|root доступа - IMHO это наиболее правильный подход для такой CMS как drupal

    Аватар пользователя axel axel 30 марта 2007 в 11:27

    > To ALL: Давайте напишем общими усилиями полный комплекс обслуживания сайта при наличии шелл|root доступа

    Полезное дело. С удовльствием поделюсь скриптами, которые использую. Результаты можно сложить в docs.drupal.ru. Давайте определим наиболее частые задачи, которые встают при обслуживании сайтов.

    --
    Администратор сайта «Drupal — Россия»
    на вопросы по Drupal отвечаю только на форумах, не пишите в почту и приватом!

    Аватар пользователя blackvl@drupal.org blackvl@drupal.org 30 марта 2007 в 12:47

    Да согласен.
    Вот мои предложения по задачам
    1. Проверять что сайт доступен
    2. Архивация и сохранение данных в укромном месте Smile
    3. Проверка, оптимизация базы
    1. На работе это решено (сервер под нами) отсылкой смс если сервер упал.
    Думаю как это решить при удаленном сервере.
    Видимо, со своего компа, смотрящего в сеть периодически скачивать статическую страницу (которая 100% не меняется, если нет - создать и не показывать Smile ) сравнивать ее хеш с предыдущим... Впрочем, может достаточно успешного скачивания первой страницы.
    При ошибке - посылать себе смс... Но тогда надо иметь свободный мобильник, прикрученный к компу... это денег стоит.
    2. Начало положено... надо дополнить разными вариантами завершающей фазы. Кому-то удобнее скриптом забирать с сайта, ком-то выбрасывать на почту и т.п.
    3. Написать скрипт (drupal-ориентированный) и периодически его гонять.

    Аватар пользователя vadbars@drupal.org vadbars@drupal.org 30 марта 2007 в 13:06

    > При ошибке - посылать себе смс... Но тогда надо иметь свободный мобильник, прикрученный к компу... это денег стоит.
    Можно посылать на почтовый адрес, который многие провайдеры предоставляют для пересылки на SMS.
    Кроме того, есть сервисы, пингующие сайт. Возможно, там есть и услуга отправки на SMS.


    Я ставлю строчку "php_value error_reporting 7" в файл .htaccess, а вы? Smile Полный русский перевод Drupal 5.x и еще некоторых модулей.

    Аватар пользователя vadbars@drupal.org vadbars@drupal.org 30 марта 2007 в 16:16

    Один из сервисов, которым я пользуюсь: http://host-tracker.com/ (сообщает по-русски). Можно поискать еще, их довольно много разных.

    А насчет SMS - мой MegafonUral пересылает все сообщения, приходящие на адрес 123456789@sms.megafonural.ru, на сотовый номер 123456789 (если, конечно, пользователь включил эту возможность).


    Я ставлю строчку "php_value error_reporting 7" в файл .htaccess, а вы? Smile Полный русский перевод Drupal 5.x и еще некоторых модулей.