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


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

Чтобы скопировать файлы резервных копий созданные панелью управления VestaCP в облачное хранилище Яндекс.Диск предлагаю воспользоваться небольшим «костылем» в виде скрипта на bash.

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

Скопируйте следующий код в файл vesta2yandex.sh, отредактировав при этом необходимые переменные.

#!/bin/bash
#
#ver 1.0
#2015-09-27
#
#Переменные WEBDAV
WEBDAVURL="https://webdav.yandex.ru/backup-folder/" #Адрес Яндекс.Диск. Имя папки редактируем по себя. Папка должна существовать!
WEBDAVUSER="yandex-user-name@yandex.ru" #Имя пользователя от Яндекс.Диска (Яндекс.Почты) Используем свое.
WEBDAVPASS="yandex-user-password" #Пароль от Яндекс.Диска Меняем на свой.
#
#Переменные Резерных копий
BACKUPURL="/home/backup/" #Директория с архивами на сервере. Это адрес по-умолчанию. Оставляем как есть.
VESTAUSERNAME="vesta-user-name" #Имя пользователя панели VestaCP. Меняем на свое.
TIMESTAMP=$(date "+%Y-%m-%d") #Это параметры по-умолчанию. Оставляем как есть.
#
#Отправляем результат в Яндекс.Диск
curl --user $WEBDAVUSER:$WEBDAVPASS -T $BACKUPURL$VESTAUSERNAME.$TIMESTAMP.tar $WEBDAVURL >/dev/null 2>&1

Как работает скрипт

В папке с архивами ищется копия с текущей датой для указанного пользователя VestaCP. Используя данные доступа к Яндекс.Диску файл архива копируется посредством Curl в облачное хранилище.
То есть вышеописанный скрипт копирует один файл с текущей датой. Поэтому запускать его надо тогда, когда архив текущего дня уже создан. В панели VestaCP по-умолчанию резервное копирование скриптом /usr/local/vesta/bin/v-backup-users производится ежедневно в 5 часов 10 минут. Поэтому запускать этот скрипт нужно попозже. Я выбрал время 5 часов 55 минут. Думаю основной скрипт за 45 минут уже успеет сделать все необходтиые копии.

Автоматическое копирование на Яндекс.Диск по расписанию

Для копирования по расписанию создадим задание в Cron от имени администратора.

Проверьте правильность пути и имя файла. И не забудьте сделать файл исполняемым:

# chmod +x имя_файла

Недостатки описанного скрипта копирования на Яндекс.Диск

Как писал выше — это не полноценный скрипт, а «костыль»:

  • Данные доступа к Яндекс.Диску хранятся в открытом виде. Прячьте скрипт так, чтобы он не был доступен из вне.
  • Нет контроля выполнения операции копирования.
  • Скрипт не удаляет старые копии на Яндекс.Диске

Тестирования скрипта

Скрипт протестирован на CentOS 6.6 (x86_64) с панелью VestaCP Version: 0.9.8 (x86_64) Release:14
Файл архива размером около 70 МБ копируется на Яндекс.Диск примерно за 1 минуту.

Благодарности

При написании статьи были использованы следующие источники:


 Метки:  ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Технический блог © 2017
SQL - 34 | 0,115 сек. | 8.46 МБ