Для самостоятельного бекапа сайтов на Вашем аккаунте необходимо подключится к нему используя протокол SSH и выполнить следующую команду для перехода в Ваш домашний каталог:


cd ~


Существует 2 способа создания бекапа Ваших сайтов:

1. Самым быстрым и удобным методом бекапа Drupal сайта на нашем хостинге является использование drush. Для бекапа сайта нужно выполнить следующую команду:

drush -r ~/domains/имя_домена ard --destination=/home/`whoami`/backup/`date +%Y%m%d`/имя_файла.tar.gz

Эта команда создаст каталог backup в Вашем домашнем каталоге, после внутри его создаст каталог с текущей датой и в него положит архив сайта путь к которому указан в команде.
В случае если Вы используете мультисайтинг то можно указать следующую команду, для создания бекапа конкретного сайта мультисайтинга:

drush -r ~/domains/имя_домена/sites/корень_сайта_мультисайтинга ard --destination=/home/`whoami`/backup/`date +%Y%m%d`/имя_файла_бекапа.tar.gz

Внутри созданного архива будут хранится файлы Вашего сайта в каталоге c именем сайта и файл дампа БД в sql формате.

Если Вам необходимо сделать бекап всех сайтов на Вашем аккаунте запустите следующую команду:

for i in `find /home/\`whoami\`/domains -mindepth 1 -maxdepth 1 -type d| grep -vP "(logs|awstats)"`;do drush -r $i ard --destination=/home/`whoami`/backup/`date +%Y%m%d`/`echo $i |awk -F"/" '{ print $5 }'`.tar.gz ;done

Эта команда создаст бекап всех drupal сайтов расположенных в domains в каталоге backup/текущая_дата в формате имя_домена.tar.gz (в случае мультисайтинга - данная команда не сработает, мы работаем над модификацией данной команды для поддержки данной возможности)
Дополнительно следует учесть что для создания бекапа необходимо достаточное количество дискового пространства иначе создание бекапа завершится с ошибкой.

2. Вторым способом создания бекапа является использование инструментов mysqldump и архиватора tar - он будет работать в том числе и если drush недоступен. В первую очередь следует создать каталог backup в Вашем домашнем каталоге:

mkdir -p ~/backup

Нужно перейти в данный каталог и создать внутри каталог с текущей датой:

cd ~/backup && mkdir -p `date +%Y%m%d` && cd ~/backup/`date +%Y%m%d`

Далее следует создать бекап файлов домена:
tar czfh имя_файла_бекапа.tar.gz ~/domains/имя_домена 2> /dev/null

И дамп БД сайта:

mysqldump -u u2999_dbuser -p u2999_db >  ~/backup/`date +%Y%m%d`/u2999_db.sql

Здесь надо заменить u2999_dbuser на вашего пользователя базы данных, а u2999_db на вашу базу данных.
Так же, утилита mysqldump спросит пароль для пользователя u2999_dbuser, Вам необходимо будет его ввести.
После этого в каталоге ~/backup/текущая дата/ будут находиться 2 файла - архив с файлами и дамп базы данных.
Бекапы Вы можете скачать по FTP/SSH-протоколу, или переместить в директорию Вашего сайта и скачать по http

Comments (22)

Winghost... #
9 years 48 weeks ago
ancient

Добрый вечер. Я дико извиняюсь, но напишите пжта команду как сделать бэкап 1 домена, а не всех (а то у меня уже место не хватает делать сразу все) и 1 базы данных по 2 способу. Спасибо.

Winghost... #
10 years 40 weeks ago
ancient

Добрый день.
1.Сделал как тут написано:
1. Самым быстрым и удобным методом бекапа Drupal сайта на нашем хостинге является использование drush. Для бекапа сайта нужно выполнить следующую команду:

drush -r ~/domains/имя_домена ard --destination=/home/`whoami`/backup/`date +%Y%m%d`/имя_файла.tar.gz

Получил только архив файлов сайта, без архива базы данных. У меня нет мультисайтинга - подскажите как сделать бэкап базы данных. Спасибо.
2. Если Вам необходимо сделать бекап всех сайтов на Вашем аккаунте запустите следующую команду:

for i in `find /home/\`whoami\`/domains -mindepth 1 -maxdepth 1 -type d| grep -vP "(logs|awstats)"`;do drush -r $i ard --destination=/home/`whoami`/backup/`date +%Y%m%d`/`echo $i |awk -F"/" '{ print $5 }'`.tar.gz ;done

Подскажите из какого места мне надо это делать? просто cd~ перейти после соединения и все?. Спасибо.

ivanbard... #
10 years 10 weeks ago
ancient

Возможно, я неправ, но в папке с сайтом рядом кладётся файл manifest и sql файл Вашего сайта.
P.S. сам пока из таких бэкапов восстанавливать не пробовал.

m.vitaly #
10 years 40 weeks ago
sysadmin

Команды из п.1 и 2 можно выполнять в любом удобном Вам каталоге - итоговые файлы будут помещены в каталог backup/текущая_дата/

Best regards, Vitaly
ras #
11 years 2 weeks ago
guest

Здравствуйте
Какие-либо подвижки в плане автоматизации резервного копирования появились?

andreyto... #
11 years 41 weeks ago
ancient

Приветствую.

Озадачился вопросом автоматической загрузки бэкапов на локальную машину по крону.
Пробовал:
- wget: не умеет ssh/sftp

- curl: не удалось настроить загрузку файлов по маске, например:
необходимо загрузить бэкапы из папки сервера ~/.bkp/mysql/daily в папку ~/backup локальной машины, команда:
curl -u u1234:pass ftp://krypton.vps-private.net/.bkp/mysql/daily/*.sql -o ~/backup/#.sql
но curl не обрабатывает маску *.sql, надо задавать имена файлов в явном виде, что неудобно

- sftp: вроде бы умеет скачивать файлы по маске *, но не удалось указать пароль к удаленному серверу в командной строке

также, возникает вопрос с переименованием скачанных файлов - добавлять дату файла в его имя

м.б. располагаете готовым скриптом, чтобы запускать его на локальной машине по крону?


annya #
11 years 41 weeks ago
guest

Здравствуйте

К сожалению, готового скрипта нет. Напишите пожалуйста, нам в техподдержку, мы постараемся вам помочь в решении данного вопроса.

katandr #
11 years 45 weeks ago
ancient

Подскажите, пожалуйста, что такое 2 в этой строке

tar czfh backup.tar.gz ~/domains/example.com 2> /dev/null

annya #
11 years 44 weeks ago
guest

Здравствуйте

2 - это обозначение потока для вывода ошибок. Более детально о потоках вы можете прочитать здесь

effectif #
11 years 47 weeks ago
ancient

drush arb
в папке домена(или папке сайта при мультисайтинге) - самый удобный способ, на мой взгляд. Архив падает в drush-backups.

Возможно, следует включить в статью описание backup drush'eм первым пунктом, учитывая, что это хостинг для Drupal c установленным Drush ))

kaztur #
11 years 45 weeks ago
ancient

Доброго времени суток!


Прочитал кучу информации, но так и не понял, как начать работать с Drush, если я под виндой - то ли ставить windiws installer с drush.org, но люди говорят, что-то про "коннектишься и пользуешься".
Может, Вы подскажете инструкцией или отдельной статьей с таковой.
И что значит "...то хостинг для Drupal c установленным Drush..."?

Спасибо!


m.vitaly #
11 years 44 weeks ago
sysadmin

Никаких пакетов для работы с сайтом на хостинге доустанавливать не нужно. Вам следует подключится к серверу с помощью сеанса SSH перейти в каталог с доменом c помощью команды cd ~/domains/имя_домена и уже находясь в нем выполнять команды drush

Best regards, Vitaly
vvzubova #
11 years 44 weeks ago
ancient

скажите, вот я установила putty, подключилась к своему аккаунту на хостинге, не могу перейти в каталог с доменом c помощью команды cd ~/domains/имя_домена - пишет No such file or directory
Куда необходимо скопировать файл example.drushrc.php со скаченного архива drush?

m.vitaly #
11 years 44 weeks ago
sysadmin

Устанавливать Drush распаковывая example.drushrc.php и другие файлы из инсталлятора не нужно - drush уже установлен для всех аккаунтов.
В команде cd ~/domains/имя_домена имя_домена нужно сменить на то домен с которым Вы собираетесь работать и после перехода в этот каталог выполнять команды drush

Best regards, Vitaly
kaztur #
11 years 44 weeks ago
ancient

Виталий, спасибо огромное!


Надо же, перерыл столько писанины, а безукоризненную ясность дал комментарий из трех строк! Использую SSH-клиент вот уже более года, но впервые узнаю, что драшем можно пользоваться прямо из клиента. :) 


andron #
11 years 48 weeks ago
ancient

Идем в папку с settings.php
cd ~/domains/domain.com/sites/domain.com

Бэкапим базу при помощи drush не зная никаких паролей/юзеров к mysql
drush sql-dump --result-file="dump.sql"
(dump.sql в данном случае "упадет" в корень домена, т.е. в ~/domains/domain.com)

Делаем полный архив папки с доменом + новоиспеченного дампа mysql
zip -r ~/backup/domain.com.zip ~/domains/domain.com 2> /dev/null
(плюсы zip'a = если домен у вас в мультисайтинге и используются симлинки - он по ним пойдет и заархивирует не симлинк, а физическую папку на которую он (симлинк) указывает).

Удаляем дамп mysql и корня домена
rm ~/domains/domain.com/dump.sql

Как то так.

P.S. Есть и другой вариант, бэкапить сразу всё drush'ем.

antidot #
11 years 49 weeks ago
ancient

а нельзя создать кнопку чтобы не прописывать каждый раз=))кому это надо чтоб каждый раз код вспоминать?+))

startup1... #
11 years 48 weeks ago
ancient

просто все вот эти длинные команды с путями прописываете в свой пунтосвичер на, скажем, трёхзнаковые сочетания и вперёд в Putty
будет очень быстро и точно


annya #
11 years 48 weeks ago
guest

К сожалению, на данный момент у нас такой функциональности нет. Данная задача стоит у нас в планах на реализацию.

mahmadin... #
12 years 6 weeks ago
ancient

Подскажите, пожалуйста, как настроить процедуру автоматического бекапа сайта по расписанию? Чтобы все перечисленные действия выполнялись ежедневно в автоматическом режиме, и в папке "backup" сохранялись бекапы за последние 7 дней. Свежий бекап перетирал самый старый.

yaarmak #
11 years 51 weeks ago
ancient

помогите откатить сайт по состоянию на 26.12.2012

radontt #
11 years 51 weeks ago
tech guru

Здравствуйте

Создайте, пожалуйста, тикет в нашу службу технической поддержки - поможем Вам с Вашим вопросом.

С уважением, Юрий