Здравствуйте, уважаемые читатели сайта 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 хостинге.

Вкратце опишу, что делает скрипт:

  1. В переменную DIR, записываем текущую дату и время.
  2. Создаем в папке backup папку для нашей резервной копии
  3. Делаем дамп базы данных mysql.
    Важно:

    • 1. Значение логин пользователя должно начинаться с –u далее идти логин пользователя,
    • 2. Пароль пользователя должен начинаться с –p далее идти ваш пароль.
    • 3. Значение имя базы данных.
    • 4. Укажите папку и имя sql файла в которую будет сделан дамп.
  4. Архивируем указанную папку сайта в дирректорию backup

Пример реального файла вы можете посмотреть на скриншоте ниже (в примере скрипт выполняет копирование четырех бд и папок с сайтами).

Пример sh скрипта который выполняет резервное копирование сайта и базы данных mysql

Написанный скрипт готов для работы. Перед тем как добавить его в cron обязательно запустите его через консоль и проверьте корректность его работы.

Запускаем sh скрипт командой:

sh backup.sh

Если файл отработал без ошибок, в папке backup должна появиться папка с текущей датой, а в ней дампы бд и архивы с сайтами.

После отработки sh скрипта в папке backup должны появиться файлы с резервными копиями

Заходим в панель управления хостинга в раздел «Crontab» и нажимаем «Добавить новую задачу».

Окно Crontab в веб-интерфейсе хостинга Timeweb

Пишем название задачи “Резервное копирование сайтов”.

Ставим тип файла Sh сценарий.

Указываем путь до нашего sh скрипта.

Указываем периодичность, с какой должен запускаться наш скрипт. Настройки по умолчанию, мня не устраивают, поэтому я выбираю «Продвинутые настройки».

Дени недели задаются числами от 0 до 6 (0 воскресенье). Если вам нужно указать несколько дней перечислите их через запятую.

Числа месяца от 1 до 31.

Месяц указываем от 1 до 12

Часы от 0 до 23

Минуты от 0 до 59.

Более подробнее про настройку крон вы можете почитать тут.

Введите оптимальные для вас настройки и нажмите сохранить.

Ниже на скриншоте показано, что установленная задача будет запускать резервное копирование каждый понедельник и пятницу в 9 00.

Установленная Cron задача в панеле управления хостингом Timeweb

И не забудьте указать почтовый ящик, на который будут приходить уведомления от cron.

Указываем email адрес в панели планировщика Crontab

В указанное вами время, планировщик cron запустит скрипт backup.sh и произведет резервное копирование. По окончанию работы, на указанный email придет уведомление. Вам останется подключиться по фтп и скачать резервные копии сайтов. И не забывайте удалять скачанные копии с сервера, хостинг не резиновый!

На сегодня все! Берегите себя!