Здравствуйте, уважаемые читатели сайта shargaev-group.ru! Большинство хостинг провайдеров не осуществляют поддержку своих клиентов на vds хостинге, вся настройка и безопасность хостинга перекладывается на плечи вебмастера или администратора. Резервное копирование сайтов не исключение.

Поэтому, чтобы не произошло такой ситуации:

— Вы пришли на работу, а сайт по какой-то причине не работает. Начинаете искать резервную копию сайта, а ее оказывается нет. Рвете на голове волосы, материте всех кругом, но не себя любимого… Дальше думаю, не стоит продолжать.

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

Есть несколько способов, как сделать резервное копирование сайта:

1. В ручную. Производиться копирование файлов по фтп, базы данных копируются через интерфейс phpmyadmin. Этот способ отнимает большое количество времени, которого и так не хватает. Не знаю как вы, но я сразу отказываюсь от данного способа.

2. Через консоль ssh. Позволяет быстро создать архив с файлами на сервере и сделать дамп базы данных mysql. Нам остается только скачать созданные файлы на компьютер. Неплохой вариант если у вас небольшое количество сайтов.

3. Автоматизация процесса создания резервных копий сайта. Нам предстоит написать скрипт для linux и установить с какой периодичностью он будет запускаться для выполнения резервного копирования. Все, что остается, это раз в неделю подключиться по фтп и скачать созданные бэкапы. Это мой вариант! Всегда нужно стараться автоматизировать рутинную работу.

О последних двух методах речь пойдет ниже.

Итак, поехали.

Настройка резервного копирования сайтов на vds хостинге

1. Резервное копирование сайта через консоль ssh.

Приступаем к копированию файлов сайта. Заходим в консоль и вводим следующую команду:




tar -cvfz название архива.tar.gz /var/www - путь до папки с сайтом.



Если комбинация в конце выдаст ошибку, попробуйте ввести такую команду:




tar cvfz название архива.tar.gz /var/www - путь до папки с сайтом



Данная команда создаст gz архив с файлами вашего сайта в домашней директории.

Делаем резервное копирование (дамп) базы данных mysql.

В консоли вводим:




mysqldump -uuserlogin -ppassword имя базы



Важно: логин пользователя и пароль должен начинаться с букв-u и -p.

Данная команда создаст дамп базы данных mysql в домашней директории.

2. Автоматизация резервного копирования сайта.

Заходим в консоль и в домашнем каталоге создаем папку под наши резервные копии, назовем ее backup:




mkdir backup



Заходим в созданную директорию и создаем в ней файл backup.sh:




cd backup



touch backup.sh



Создаем файл backup.sh для резервного копирования сайтов

Открываем файл backup.sh на редактирование:




nano backup.sh



Добавляем в него код:




#!/bin/bash



DIR=`date +%F_%H-%M`;



mkdir /домашняя директория/backup/$DIR;



mysqldump -uлогин -pпароль имя базы > /домашняя директория/backup/$DIR/имя базы.sql



tar cvfz /домашняя директория/backup/$DIR/имя архива.tar.gz /var/www



Скрипт для резервного копирования сайта

Сохраняем файл Ctr+O и закрываем его Ctr+X.

Вкратце распишу работу скрипта:

1) В переменную DIR записываем текущую дату и время.

2) Создаем в папке backup директорию с названием текущей даты, в ней будут храниться резервные копии

3) Делаем дамп базы mysql

4) создаем архив gz с файлами сайта.

Скрипт для выполнения резервного копирования мы написали, осталось добавить задание в cron. Полную инструкцию по работе с  cron вы можете посмотреть тут.

Открываем планировщик:




sudo crontab -e



В конце файла ставим задачу на запуск нашего скрипта:




0 9 * * 1,5 ~/backup/backup.sh



Если файл пустой, в начале файла обязательно добавьте:




SHELL=/bin/bash



MAILTO=емаил на который будет приходить уведомление.



Устанавливаем задачу на резервное копирование сайта в планировщике Cron

Сохраняем файл Ctr+O и закрываем его Ctr+X.

Установленная команда в планировщике будет запускать скрипт в 9 утра, каждый понедельник и пятницу. Вам остается раз в неделю подключаться к аккаунту по фтп и скачивать резервные копии.  Если вас не устраивает данное расписание, вы можете его изменить, воспользовавшись документацией по cron, ссылку я давал выше.

Какие ошибки могут встретиться на вашем пути

Если вы создали файл backup.sh на компьютере под управлением ОС Windows и залили его в директорию backup, при запуске скрипта cron может выдать следующую ошибку:

/bin/sh^M: bad interpreter: No such file or directory

Проблема состоит в том, что редакторы Windows добавляют в конце строки символ «возврата каретки» CR/LF

Решить данную проблему можно командой dos2unix. Данная команда должна быть установлена в системе, если нет, установите ее:




apt-get install dos2unix



Запускаем команду перекодирования:




dos2unix /backup/backup.sh



По завершению перекодирования, все должно работать на УРА!

На сегодня все.

А какие методы резервного копирования сайтов используете вы?