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

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

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

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