Здравствуйте, уважаемые читатели сайта shargaev-group.ru! Когда у вас на обслуживание находиться один сайт, сделать его резервное копирование не составляет особого труда. 10-15 минут и копия сайта готова! Но если у вас на обслуживании больше 10 сайтов и все они расположены на разных аккаунтах, процесс резервного копирования начинает отнимать большое количество времени.
По этой причине я и задумался, как оптимизировать процесс резервного копирования сайтов. Мой метод заключается в том, что в определенное время, написанный sh скрипт осуществляет архивацию файлов на сервере, создает дампы баз данных и сохраняет их в указанную директорию. Нам остается один или два раза в неделю подключаться по фтп к серверу и скачивать сделанные архивы.
Хочу обратить ваше внимание, что пример показан на основе хостинга Timeweb (Мне очень нравиться этот хостин и большинство моих проектов расположено именно на нем). Пусть это вас не пугает, вы можете легко адаптировать данный пример под свой хостинг, единственно, что у вас будет отличаться, это панель планировщика Cron в вэб-интерфейсе хостинга.
Готовы? Тогда приступим!
Настройка резервного копирования на виртуальном хостинге Timeweb
Хочу вам напомнить — копирование данных в консоль осуществляется правой кнопкой мыши.
Подключаемся по ssh к серверу и создаем папку для наших бэкапов командой:
mkdir backup
Затем в корне аккаунта создаем sh скрипт, который и будет выполнять процесс резервного копирования сайтов:
touch backup.sh
Открываем созданный скрипт на редактирование:
pico backup.sh
Если данная команда выдаст ошибку, попробуйте эту:
nano backup.sh
В открытом файле вставьте следующий код:
DIR=`date +%F_%H-%M`; mkdir backup/$DIR; mysqldump -uлогин ползователя -pпароль имя базы › backup/$DIR/название дампа.sql tar cvfz backup/$DIR/название архива.tar.gz папка с сайтом (которую мы архивируем)
Нажимаем Ctr+O и Enter, затем Ctr + x.
Про данный скрипт я писал ранее в статье Настройка резервного копирования сайтов на vds хостинге.
Вкратце опишу, что делает скрипт:
- В переменную DIR, записываем текущую дату и время.
- Создаем в папке backup папку для нашей резервной копии
- Делаем дамп базы данных mysql.
Важно:- 1. Значение логин пользователя должно начинаться с –u далее идти логин пользователя,
- 2. Пароль пользователя должен начинаться с –p далее идти ваш пароль.
- 3. Значение имя базы данных.
- 4. Укажите папку и имя sql файла в которую будет сделан дамп.
- Архивируем указанную папку сайта в дирректорию backup
Пример реального файла вы можете посмотреть на скриншоте ниже (в примере скрипт выполняет копирование четырех бд и папок с сайтами).
Написанный скрипт готов для работы. Перед тем как добавить его в cron обязательно запустите его через консоль и проверьте корректность его работы.
Запускаем sh скрипт командой:
sh backup.sh
Если файл отработал без ошибок, в папке backup должна появиться папка с текущей датой, а в ней дампы бд и архивы с сайтами.
Заходим в панель управления хостинга в раздел «Crontab» и нажимаем «Добавить новую задачу».
Пишем название задачи “Резервное копирование сайтов”.
Ставим тип файла Sh сценарий.
Указываем путь до нашего sh скрипта.
Указываем периодичность, с какой должен запускаться наш скрипт. Настройки по умолчанию, мня не устраивают, поэтому я выбираю «Продвинутые настройки».
Дени недели задаются числами от 0 до 6 (0 воскресенье). Если вам нужно указать несколько дней перечислите их через запятую.
Числа месяца от 1 до 31.
Месяц указываем от 1 до 12
Часы от 0 до 23
Минуты от 0 до 59.
Более подробнее про настройку крон вы можете почитать тут.
Введите оптимальные для вас настройки и нажмите сохранить.
Ниже на скриншоте показано, что установленная задача будет запускать резервное копирование каждый понедельник и пятницу в 9 00.
И не забудьте указать почтовый ящик, на который будут приходить уведомления от cron.
В указанное вами время, планировщик cron запустит скрипт backup.sh и произведет резервное копирование. По окончанию работы, на указанный email придет уведомление. Вам останется подключиться по фтп и скачать резервные копии сайтов. И не забывайте удалять скачанные копии с сервера, хостинг не резиновый!
На сегодня все! Берегите себя!
Благодарю. Годный совет.
Спасибо, хорошая статья!
Единственное примечание к скрипту, раз уж мы упаковываем файлы дампов, сами дампы следует удалить, на мой взгляд.