Доброго времени суток, уважаемые читатели. Сегодня тема статьи: "Бэкап сайта в Яндекс Диск". В одной из прошлых статей, я приводил примеры того, как правильно организовать бэкап сайта. Одним из вариантов, я предлагал делать бэкап сайта в облачное хранилище. Сегодня мы на практике, рассмотрим настройку резервного копирования сайта в Яндекс диск.

Для наших целей будем использовать утилиту Davfs2, которая позволяет производить подключение по протоколу WebDAV. Корме того, у Вас должен быть активный аккаунт в Яндексе.

Установка утилиты Davfs2 и подключение Яндекс Диска

  • Устанавливаем утилиту Davfs2.
# yum install davfs2
установка утилиты Davfs2
  • Для монтирования Яндекс Диска, нужно создать специальную директорию.
# mkdir /mnt/backup
  • После создания директории, можно попробовать подключить Яндекс диск к созданной для этих целей директории. Для этого выполняем следующую команду:
# mount -t davfs https://webdav.yandex.ru /mnt/backup/
  • В процессе подключения, нужно будет ввести логин (адрес Вашей электронной почты на Яндексе), и пароль (пароль Вашей электронной почты на Яндексе).
подключение Яндекс Диска
  • В итоге появится предупреждение (так и должно быть), и если все данные указаны верно, то произойдёт подключение к Вашему хранилищу. Вы можете зайти в директорию /mnt/backup, и наглядно увидеть содержимое Вашего Яндекс диска.
  • Для отключения хранилища, нужно ввести команду:
# umount /mnt/backup
  • Описанного выше, уже достаточно для того, чтобы в ручном режиме, при необходимости производить резервное копирование в Яндекс диск.

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

Настройка автоматического подключения Яндекс Диска

  • С ручным резервным копированием разобрались. Но не будем на этом останавливаться, и пойдём дальше.
  • Для начала настроим автоматическое подключение Яндекс диска. Для этого нужно найти файл /etc/davfs2/secrets, и в самом низу добавить одну строчку:
/mnt/backup/ ящик пароль
сохранение данных для подключения к Яндекс Диску
  1. Ящик – указываем свой адрес электронной почты на Яндексе.
  2. Пароль - указываем пароль от электронной почты на Яндексе.
  • Теперь можно попробовать подключить Яндекс диск. Вводим знакомую команду:
# mount -t davfs https://webdav.yandex.ru /mnt/backup/
  • И на этот раз, нам уже не нужно вводить логинов и паролей, всё происходит прозрачно.
  • В итоге, появляется уже знакомое нам предупреждение, и мы получаем доступ к Яндекс Диску в директории /mnt/backup/.
предупреждение при подключении к Яндекс Диску

Настройка автоматического бэкапа сайта в Яндекс Диск

  • Ну а теперь, можно переходить непосредственно к автоматизации резервного копирования сайта в Яндекс Диск. Для этих целей создадим специальный скрипт backup.sh. Я буду создавать скрипт в директории root/bin, Вы в свою очередь, на своё усмотрение.

Для примера, я буду использовать пути и данные из прошлой статьи, об установке облачного хранилища nextcloud.


#!/bin/sh
date_time=`date +"%Y-%m-%d_%H-%M"`
dir_1='/mnt/backup'
dir_2='/var/www/html/'
dir_3='nextcloud'

user='oblako'
password='123'
bd='oblako'

mount -t davfs https://webdav.yandex.ru /mnt/backup/
/usr/bin/tar -czvf $dir_1/www_$date_time.tar.gz -C $dir_2 $dir_3
/usr/bin/mysqldump --opt -v --databases $bd -u$user -p$password | /usr/bin/gzip -c > $dir_1/mysql_$date_time.sql.gz
/usr/bin/find $dir_1 -type f -mtime +7 -exec rm {} \;
umount /mnt/backup

--- В начале скрипта указываются переменные:

  1. Дата и время.
  2. Директория в которую будет производиться резервное копирование.
  3. Директория в которой находится каталог подлежащий бэкапу.
  4. Каталог с которым будет производится резервное копирование.

--- Следующие три строчки, это данные для подключения к базе данных:

  1. Пользователь.
  2. Пароль.
  3. Имя базы данных.

--- Ниже идут команды самого резервного копирования:

  1. Первая команда - подключение Яндекс диска.
  2. Вторая команда - создание бэкапа базы данных.
  3. Третья команда - создание бэкапа файлов сайта.
  4. Четвёртая команда - это команда на удаление в директории /mnt/backup/ файлов старее 7 дней, что позволит Вам, иметь в наличии резервных копий на 7 дней (при желании, можно изменить под свои надобности).
  5. И последняя команда – отключение Яндекс Диска.
  • Делаем созданный скрипт /root/bin/backup.sh исполняемым.
# chmod 0740 /root/bin/backup.sh
  • И последнее, что осталось сделать, это добавить задание на исполнение данного скрипта в cron. Открываем файл /etc/crontab и вносим в него задание.
30 2 * * * root /root/bin/backup.sh >/dev/null 2>&1

После добавления нашего задания, каждый день в 2:30, будет производиться резервное копирование сайта.

  • Можно дождаться указанного в задании времени, или для проверки изменить время, и наглядно убедится в функционировании наших настроек.
  • Если всё сделано верно, то произведя подключение Яндекс Диска в ручном режиме, мы увидим созданные резервные копии.
резервные копии сайта на Яндекс диске

Очистка кэша утилиты Davfs2

  • В процессе работы, утилита Davfs2 будет сохранять полновесный кэш нескольких последних бэкапов. Это отразится на Вашем дисковом пространстве, а также возможны зависания пида.
  • Чтобы избежать таких неприятностей, можно настроить отчистку директории с кэшем. Для этих целей создадим скрипт webdav-cache.sh. Я как и в примере выше, создам скрипт в директории /root/bin, а Вы на своё усмотрение.

#!/bin/sh
# Очистка кэша
find /var/cache/davfs2/ -mindepth 1 -a -print0 | xargs -n 100 -0 rm -rf

  • Делаем скрипт исполняемым.
# chmod 0740 /root/bin/webdav-cache.sh
  • Чтобы автоматизировать процесс, вносим задание на исполнение скрипта /root/bin/webdav-cache.sh в cron. Открываем файл /etc/crontab и вносим в него задание.
30 5 * * * root /root/bin/webdav-cache.sh >/dev/null 2>&1

Время нужно задать так, чтобы успел отработать скрипт бэкапа. Я для примера, сделал разницу между исполнением скриптов в 3 часа. Соответственно в 5:30, каждый день, будет производится отчистка директории с кэшем /var/cache/davfs2.

Сегодня мы рассмотрели тему: "Бэкап сайта в Яндекс Диск". Организовали и настроили резервное копирование сайта в облачное хранилище Яндекс Диск. Смотрите также видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Бэкап сайта в Яндекс Диск":