Бэкап сайта в Яндекс Диск

Доброго времени суток, уважаемые читатели. Сегодня тема статьи: "Бэкап сайта в Яндекс Диск". В одной из прошлых статей, я приводил примеры того, как правильно организовать бэкап сайта. Одним из вариантов, я предлагал делать бэкап сайта в облачное хранилище. Сегодня мы на практике, рассмотрим настройку резервного копирования сайта в Яндекс диск.
Для наших целей будем использовать утилиту Davfs2, которая позволяет производить подключение по протоколу WebDAV. Корме того, у Вас должен быть активный аккаунт в Яндексе.
Установка утилиты Davfs2 и подключение Яндекс Диска
- Устанавливаем утилиту Davfs2.
# yum install davfs2

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

- В итоге появится предупреждение (так и должно быть), и если все данные указаны верно, то произойдёт подключение к Вашему хранилищу. Вы можете зайти в директорию /mnt/backup, и наглядно увидеть содержимое Вашего Яндекс диска.
- Для отключения хранилища, нужно ввести команду:
# umount /mnt/backup
- Описанного выше, уже достаточно для того, чтобы в ручном режиме, при необходимости производить резервное копирование в Яндекс диск.
О том как производить резервное копирование сайта в ручном режиме, я уже писал в одной из предыдущих статей.
Настройка автоматического подключения Яндекс Диска
- С ручным резервным копированием разобрались. Но не будем на этом останавливаться, и пойдём дальше.
- Для начала настроим автоматическое подключение Яндекс диска. Для этого нужно найти файл /etc/davfs2/secrets, и в самом низу добавить одну строчку:
/mnt/backup/ ящик пароль

- Ящик – указываем свой адрес электронной почты на Яндексе.
- Пароль - указываем пароль от электронной почты на Яндексе.
- Теперь можно попробовать подключить Яндекс диск. Вводим знакомую команду:
# 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
--- В начале скрипта указываются переменные:
- Дата и время.
- Директория в которую будет производиться резервное копирование.
- Директория в которой находится каталог подлежащий бэкапу.
- Каталог с которым будет производится резервное копирование.
--- Следующие три строчки, это данные для подключения к базе данных:
- Пользователь.
- Пароль.
- Имя базы данных.
--- Ниже идут команды самого резервного копирования:
- Первая команда - подключение Яндекс диска.
- Вторая команда - создание бэкапа базы данных.
- Третья команда - создание бэкапа файлов сайта.
- Четвёртая команда - это команда на удаление в директории /mnt/backup/ файлов старее 7 дней, что позволит Вам, иметь в наличии резервных копий на 7 дней (при желании, можно изменить под свои надобности).
- И последняя команда – отключение Яндекс Диска.
- Делаем созданный скрипт /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.
Сегодня мы рассмотрели тему: "Бэкап сайта в Яндекс Диск". Организовали и настроили резервное копирование сайта в облачное хранилище Яндекс Диск. Смотрите также видео по теме.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Бэкап сайта в Яндекс Диск":

WMZ-кошелёк = Z667041230317
«Linux»
adward
После ввода пароля пишет:
Mounting failed.
Could not authenticate to server: rejected Basic challenge
Хотя через браузер логин/пароль прокатывает.
в последнее время яндекс сильно изменился. Может быть где то в настройках яндекса нужно включить подключения со сторонних источников (как на mail.ru)?
Андрей Бондаренко
Может быть пробелы проставлены не верно. Нужно как на картинке в статье.
Либо может быть ведутся какие-то работы на яндексе. Или они закрыли лавочку, и теперь протокол не поддерживается.