logo

Перенос бэкапов VestaCP на Яндекс и Google диски

Разместил , . Последнее изменение: 2018-12-13. / 14 комментариев

перенос бэкапов vestacp на облачный диск

  1. Перенос бэкапов VestaCP на Google Диск.
  2. Перенос бэкапов VestaCP на Яндекс.Диск.

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

Что понадобится:

    1. Аккаунты Гугла и Яндекса.
    2. Установленная VestaCP.
    3. Инструкция тестируется на Ubuntu 16.04.

Перенос бэкапов VestaCP на Google Диск

Установка google-drive-ocamlfuse

С помощью этой программы мы подключим Google Диск к нашему серверу и сможем управлять файлами средствами Linux.

sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse

Авторизация и подключение диска

  1. Переходим по ссылке и авторизуемся https://code.google.com/apis/console/
  2. Создаём новый проект и даём ему имя.
  3. Активируем Google Drive API. Ищем во вкладке библиотека либо в разделе "Популярные API и сервисы" → включаем.
  4. Переходим во вкладку "Учётные данные", создаём новый "Идентификатор клиента OAuth".
  5. Появляется ошибка "Чтобы создать идентификатор клиента OAuth, укажите название продукта для окна запроса доступа" → нажимаем "Настроить окно запроса доступа OAuth" → Вводим только название → Сохранить → В списке выбираем "Другие типы" → Создать.
  6. Теперь у нас есть идентификатор и секрет. Переходим к консоли и пишем:
    google-drive-ocamlfuse -headless -label me -id ИДЕНТИФИКАТОР -secret СЕКРЕТ
  7. Получаем ответ в виде ссылки, копируем и вставляем в браузер.
    Please, open the following URL in a web browser: https://accounts.google.com/...
  8. Вводим полученный код в консоль.

На этом авторизация закончена, остаётся создать папку и подключить Гугл Диск:

mkdir /google_dir
google-drive-ocamlfuse -label me /google_dir

Теперь появится новая папка "google_dir" связанная с сервером гугла.

Перенос архивов по расписанию

Вводим команду (может появиться выбор текстовых редакторов, советую выбрать nano):

crontab -e

Добавляем следующую строку в конец файла:

44 2 * * * sudo cp -R -n /backup/*.tar /google_dir/backup/

Создаём папку для копирования:

sudo mkdir /google_dir/backup/

Расшифрую команду для cron: в 2:44, по времени сервера, от имени администратора будет производиться копирование из папки "/backup/" файлов подходящих под маску *.tar, в папку "google_dir/backup/", файлы которые уже находят в целевой папке копироваться не будут. Если у вас много пользователей, а вам нужен бэкап только одного, то разумно будет изменить маску файла на admin*.tar

Удаление старых файлов

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

sudo nano /etc/delete-backup.sh

Делаем файл исполнительным:

sudo chmod ugo+x /etc/delete-backup.sh

Задаём выполнение по расписанию:

10 2 * * * sudo /etc/delete-backup.sh /google_dir/backup/ *tar 7

Расшифрую команду для cron: в 2:10 по времени сервера, от имени администратора будет производиться удаление файлов в папке "/google_dir/backup/" подходящих под маску "*tar", останется 7 самых свежих.

1 2 3 4 5

Перенос бэкапов VestaCP на Яндекс.Диск

Установка консольного клиента Яндекс.Диск

В этот раз мы пойдем немного другим путем и не будем подключать диск к нашей системе, а воспользуемся клиентом Linux для работы с Яндекс.Диск посредством REST API. Установка немного отличается от официального. Это сделано с целью предоставления возможности пользователю admin взаимодействовать со скриптом, в частности, запускать синхронизацию через cron.

Для установки клиента вводит команды:

git clone https://github.com/abbat/ydcmd.git
sudo cp ydcmd/ydcmd.py /usr/local/vesta/bin/ydcmd

Регистрация нового приложения

Для работы консольного клиента его следует зарегистрировать oauth.yandex.ru. Нажимаем создать приложение → вводим название → выделяем все пункты в разделе "Яндекс.Диск REST API".

В разделе "Платформы" выберите "Веб-сервисы" и нажмите "Подставить URL для разработки" → нажмите "Создать приложение".

После создания приложения вы получите его id. Вставьте id приложения в соответствующее место и перейдите по ссылке → нажмите кнопку "Разрешить".

https://oauth.yandex.ru/authorize?response_type=token&client_id=полученный_id

На экране появился токен (набор букв и цифр), именно он нужен для работы приложения.

Создаем файл конфигураций:

sudo nano /root/.ydcmd.cfg

Прописываем в нем следующее:

[ydcmd]
token = abcd

Устанавливаем права для всех только чтение:

sudo chmod 400 /root/.ydcmd.cfg

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

Советую, сначала, ввести команду ниже в консоль и проверить работоспособность приложения.
Переходим в VestaCP во вкладку "CRON" → добавляем задание → выбираем ежедневное выполнение, ставим ночное время → вводим следующую команду:

sudo /usr/local/vesta/bin/ydcmd put --rsync /backup/ disk:/ваша-папка

Если, такая папка уже существует на Яндекс.Диске, то все данные будут из неё удалены.Но также можно пойти в обход VestaCP используя crontab -e.

Для своей работы приложение может требовать python-dateutil:

sudo apt-get install python-dateutil

Надеюсь статья вам помола, оставляйте свои комментарии, до новых встреч.

Полезные ссылки:

  1. Подробнее про установку google-drive-ocamlfuse.
  2. Подробнее про авторизацию через google-drive-ocamlfuse.
  3. Консольный клиент Яндекс.Диск.

 

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

  • А как восстановить с Яндекса копию?

    • Подмена существующего бэкапа, а затем средствами панели.

      • То есть мне надо загрузить его на локальный сервер в папку /beckup?
        Можете подробнее написать?

        • В папке beckup обычно уже хранятся бэкапы ваших сайтов, переименуйте ваш старый архив на такое имя которое уже есть в этой папке, загрузите старый переименованный архив в эту папку с заменой. Средствами весты восстановите бэкап.
          Но я не совсем понимаю вас, при загрузке архивов на Я.Диск таким методом как в статье локальные архивы не удаляются.

  • А скрипта для удаления старых файлов с Яндекс.диска нет?

    • Он не требуется, так как происходит не загрузка файлов, а синхронизации папки с бэкапами. Т. е. что удалено в папке с бэкапами на сервере, удалится и на Я.Диске.

  • привет. за вместо token = abcd пишем тот токен который был получен где много букв и цифр?
    то у меня вылетает такая ошибка.
    sudo /usr/local/vesta/bin/ydcmd put --rsync /backup/ disk:/backup-vesta
    HTTP-403: Forbidden

    • а на почту пришло письмо
      We trust you have received the usual lecture from the local System
      Administrator. It usually boils down to these three things:

      #1) Respect the privacy of others.
      #2) Think before you type.
      #3) With great power comes great responsibility.

      sudo: no tty present and no askpass program specified

      не указана программа askpass. где ошибся?

      • Привет, напиши мне в телеграмм или в вк и предоставь доступ к серверу. Попробую разобраться)

  • Есть GPL утилита https://rclone.org
    Которая весит копейки и может синхронизировать с различными обычными сервисами, я еей использую чтобы синхронизировать папки.
    Кладем в крон, при желании делаем архивацию по датам.

    • Спасибо присмотрюсь 😉

  • Инструкция для CentOS 7 в студию! 🙂

  • Можешь замутить инструкцию для CentOS?) Некоторые команды не пашут. То есть почти все команды

    • Добавил в список)

Оставить комментарий

* Возможна анонимная отправка комментария.

Согласен с политикой конфиденциальности *