Bash скрипт создание резервных копий на Яндекс.Диск


Возник вопрос о создании резервных копий сайта на какое-нибудь облачное хранилище.

Выбор пал на Яндекс.Диск, во-первых, дают бесплатно 10 гигабайт во-вторых за небольшую плату можно увеличить дисковое пространство. И самое главное позволяет работать через WebDAV (Web-based Distributed Authoring and Versioning – расширение протокола HTTP позволяющее работать с файлами на удаленном хосте).

Для работы из командной строки с WebDAV можно использовать curl.

И так сам скрипт:

#!/bin/sh

 DATA=`date +%Y-%m-%d`
 #Имя пользователя на yandex
 WEBUSER="yandex-mail-name@yandex.ru"
 #Пароль от яндекс диска
 WEBPASS="password"
 
 #Архивируем все файлы в каталоге нашего сайта
 tar -czvf web_site_$DATA.tar.gz /var/www/site.ru/www/
 #Отправляем получившийся архив в облако 
 curl --user $WEBUSER:$WEBPASS -T web_site_$DATA.tar.gz https://webdav.yandex.ru/ --verbose -o /dev/null
 #Что бы не плодить копии на нашем сервере удаляем отправленный архив
 rm web_site_$DATA.tar.gz

 #Делаем дамп базы данных 
 #Указываем пользователя mysql и пароль и название своей базы данных
 mysqldump --user=db_user_name --password=db_password  site > site_$DATA.sql;
 #Отправляем получившийся файл в облако 
 curl --user $WEBUSER:$WEBPASS -T site_$DATA.sql https://webdav.yandex.ru/ --verbose -o /dev/null
 rm site_$DATA.sql

Незабываем сделать файл исполняемым:

  chmod +x имя_файла.sh

Для удаления файла с Яндекс.Диска необходимо выполнить команду:

  curl --user $WEBUSER:$WEBPASS --request DELETE https://webdav.yandex.ru/имя_файла

А дальше уже по желанию можно периодически ручками запускать скрипт или добавить задание на его выполнение в cron.

Это не идеальное решение! Это просто еще один костыль.

#backup

Copyright © 2019