Вы здесь

Как делать бэкап сайта на хостинге. Пример скрипта.


Если у вас есть сайт, то вам просто необходимо регулярно делать его бэкап. Для популярных CMS, зачастую существуют модули для создания бэкапов. Но на общественном хостинге они скорее всего работать не будут, из-за ограничений по времени выполнения скриптов или ожидания веб сервера. На этот случай, некоторые хостинг провайдеры предлагают делать бэкап встроенными средствами панели управления хостингом или использовать cron/ssh. Ниже я покажу вам пример скрипта, которым я делаю бэкап этого сайта, как раз-таки при помощи планировщика заданий cron на хостинге. При этом этот бэкап на хостинге не хранится, и не занимает лишний объем далеко не безграничного пространства (да и смысла нет никакого хранить бэкап там же где он делается).

Короче наша процедура будет состоять из двух частей:

1) Собственно, создание бэкапа, для этого будет выполняться скрипт на хостинге

2) Перенос этого бэкапа в другое место, например на домашний компьютер. Здесь будет еще один скрипт, который соответственно будет выполняться на компьютере.

И так, скрипт №1:

tar czf ~/domains/site.ru/backups/tmp/files.tgz ~/domains/site.ru/public_html/
mysqldump -h 'server.hosting.ru' -u 'user' -p'password' db_name>~/domains/mytechnote.ru/backups/tmp/mysql.sql
tar czf ~/domains/site.ru/backups/site_ru_$(date +"%Y-%m-%d").tgz ~/domains/site.ru/backups/tmp/*
rm -rf ~/domains/site.ru/backups/tmp/*

Давайте разберем этот скриптик:

В первой строчке мы сжимаем все файлы сайта и помещаем их во временную папку.

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

В третьей строчке мы объединяем архив файлов и дамп базы в один файл.

В четвертой мы удаляем файлы из временной папки.

Для работы этого скрипта у вас должны быть созданы папки куда будет делаться бэкап (backups и backups/tmp).

Сохраняем этот скрипт куда-нибудь на хостинге, даем имя, например, backup.sh. Не забываем дать права на исполнение этому файлу.

После этого переходим к настройке cron на вашем хостинге, в зависимости от используемой провайдером панели, процедура настройки может отличаться, но принцип будет один. Нам нужно создать расписание, указать когда оно должно выполняться и в качестве программы нужно указать следующее - /bin/sh /home/ваше_имя_пользователя/путь/до/сккрипта/backup.sh

Бывают панели, где расписание не очень понятно задается, я поясню. Вы можете задать 5 цифр в настройках. Первая означает минуты, вторая часы, треться день месяца, четвертая месяц, пятая день недели. То есть если мы хотим что бы бэкап делался раз в день, в 8 утра, то ваше задание должно выглядеть так:

0 8 * * * /bin/sh /home/ваше_имя_пользователя/путь/до/сккрипта/backup.sh

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

С первой частью закончили, теперь приступим ко второй. Как я уже говорил, что бы не занимать лишнее место на хостинге мы будем копировать наши файлы по ftp и после копирования удалять их с хостинга. Для этого удостоверьтись, что на хостинге у вашего ftp пользователя есть доступ к папке куда складывается бэкап. Если нет, то создайте еще одного пользователя, либо дайте доступ существующему.

Cкрипт написан под Linux, но под Windows принцип будет примерно такой же, погуглите на тему bat ftp.

#!/bin/bash
ftp -in адрес_ftp << END_SCRIPT
user Ваше_имя_пользователя ваш_пароль
binary
cd /backups
lcd /mnt/wd-backup/backup/site
mget site*
mdelete site*
END_SCRIPT

 

Разберем этот скрипт.

Во второй строчке подключаемся к серверу, вам нужно указать адрес ftp сервера.

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

В четвертой переходим в папку на ftp сервере, путь указывается относительно корня ftp, то есть относительно той папки в которую вы попадаете, когда заходите на сервер по FTP.

Далее переходим в папку на нашем компьютере.

Затем копируем все файлы, у которых название начинается на site.

После чего удаляем эти файлы.

Сохраняем этот скрипт куда нибудь, даем имя например ftp-copy.sh и даем этому скрипту право на исполнение.

chmod +x ftp-copy.sh

После этого создадим расписание, что бы скрипт запускался автоматически, для этого набираем команду crontab –e. И в открывшемся файле в самый низ, добавим строчку:

0 10 * * * /bin/sh /home/sanglyb/scripts/ftp-copy.sh

Соответственно вам нужно изменить путь до скрипта на ваш. Это задание будет запускаться каждый день в 10 утра.

Вот и все, теперь данные вашего сайта будут гораздо более сохранны. В итоге, у меня настроена так что, в 8 утра бэкап делается на хостинге и в 10 он копируется ко мне на компьютер.

Видео по теме:

0 0

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<


Комментарии

Добрый день!Первая часть скрипта Cron разобрался и всё работает.Большое спасибо!Вот передача не получилось.У меня стоит задача сделать так:Есть FTP сервер  ПРИМЕР:ftp.mir.ruЛогин : mmm77Пароль: 2527 Мой файл находится на хостинге в папке /home/r/server/сойсайт.ru/public_html/backups/ФАЙЛ начинается название siteКак будет выглядеть мой cron ? #!/bin/bashftp -in ftp.mir.ru << END_SCRIPTuser mmm77 2527binarycd /backups  mget site*mdelete site*END_SCRIPT Так же интересует если  у мен на ftp нестолько папок как сделать что бы с этого хостинга файл приходил в папку /moisait_ru/ 

0 0

То что в статье - вторая часть - не для отдельного ftp, это хозяйство запускается на локальном компьютере, например, соответсвенно ftp сервер - это ваш хостинг. А дальше посмотрите повнимательнее на описание под кодом, там все подробно описано.

P.S. Скоро плаанирую выложить еще один пример скрипта, для заливания с хостинга на отдельный FTP сервер. Правда пока не знаю на сколько скоро =)

0 0