Bash скрипт переноса резервных копий VestaCP на Яндекс.Диск
Раздел(ы): Панели управления хостингом, Резервное копирование
Просмотры: 2180
Комментарии: 0
Панель управления хостингом 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 минуту.
Благодарности
При написании статьи были использованы следующие источники: