Резервное копирование файлов с VPS хостинга на Google.Drive


Резервное копирование и восстановление информации (Backup & Recovery)
backup cv gdrive git gita install web
 
 

* В этом блоге я описываю свою повседневную рабочую практику, поэтому все статьи в блоге написаны лично мной и при копировании их на свой сайт пожалуйста указывайте ссылку на страницу откуда вы скопировали.
* Если какая-то статья вам помогла, то вы можете дать мне немного денег вместо простого спасибо (ссылка на форму поддержки проекта внизу страницы), если вы что-то не поняли или у вас что-то не получается, то вы можете нанять меня и я вам все подробно расскажу (расценки и ссылки в конце статьи).


(последние правки 1 месяц)

Довольно популярной задачей при настройке небольших web-проектов является настройка последующего резервного копирования на гугл-диск. Задачка довольно простая и настраивается такое резервное копирование за полчаса максимум, но я все равно не рекомендую заниматься ерундой и использовать нормальные средства резервного копирования, но на всякий случай (когда совсем без вариантов) я расскажу как я делаю такие бэкапы.

Настроить такое предлагают довольно часто, я конечно считаю, что это не самое лучшее место куда стоит делать бэкапы, но как говориться, если вы настаиваете, то любой каприз за ваши деньги. Обратите внимание, что эта система бэкапов требует дополнительной настройки оповещений и отслеживания статуса завершения (с последующим оповещением о сбоях резервного копирования), так как она может просто однажды перстать работать с ошибкой:

oauth2: cannot fetch token: 400 Bad Request
Response: {
  "error" : "invalid_grant"
}

И вам потребуется перерегистрировать подключение, но вы банально можете остаться без бэкапов пока это заметите и если вас это не останавливает, то тогда приступим к настройке.

Устанавливаем консольный клиент GDrive из официального GIT репозитария https://github.com/prasmussen/gdrive:

# apt install golang-go
# mkdir /usr/src/go
# export GOPATH=/usr/src/go/
# go get github.com/prasmussen/gdrive
# ln -s /usr/src/go/bin/gdrive /usr/bin/gdrive

Или просто скачайте бинарный файл из раздела Downloads (согласно вашей архитектуры).

Загрузите консольный клиент гугл-диска

После установки авторизуйтесь на Google.Drive выполнив авторизацию от имени пользователя который будет выполнять резервное копирование:

# gdrive list

Вообще можно выполнить любую из команд (копировани, получение списка, удаление файла) и при первом запуске в консоль будет выведен URL который необходимо вставить в браузер, после чего авторизоваться на GoogleDrive и скопировать в консольное приложение код ответа сгенерированный web-частью GoogleDrive.

Запрос списка каталогов на гугл-диске

Фактически на этом можно закончить, а список команд которые вы можете использовать вы получите выполнив команду:

# gdrive help

Едиственной серьезной особенностью работы с консольным клиентом GDrive является необычный метод работы с вложенными каталогами. Для создания вложенного каталога вам необходимо знать идентификатор родительского каталога:

# gdrive list
Id                                  Name     Type   Size   Created
1M_KCiA3RhkHEWEtpBztW-JnBMWiv8v3n   Backup   dir           2017-12-27 04:08:24

При работе с вложенными объеками акузывайте опцию --parent, например для создание каталога вложенного в корневой каталог Backup необходимо выполнить команду:

# gdrive list
Id                                  Name     Type   Size   Created
1M_KCiA3RhkHEWEtpBztW-JnBMWiv8v3n   Backup   dir           2017-12-27 04:08:24
# gdrive mkdir --parent 1M_KCiA3RhkHEWEtpBztW-JnBMWiv8v3n web-portal

Для загрузки файла в каталог соответственно используется команда:

# gdrive upload --parent 1cKL1yzvz388xFUdu6_IpCZvfVdkRzZGv /opt/web/backup/dump.sql.tar.gz

На последок приведу реально действующий скрипт ежедневного резервного копирования файлов на GoogleDrive в отдельный каталог (с удалением копий старше одного месяца):

#!/bin/sh

rm /opt/web/backup/*
/opt/web/gita-web/backup_files.sh
/opt/web/gita-web/backup_database.sh

date_now=`date +%d.%m.%Y`
delete_date=`date -d "-30 days" +%d.%m.%Y`
cat /opt/web/backup/dump.sql.tar.gz | gdrive upload - --parent 1cKL1yzvz388xFUdu6_IpCZvfVdkRzZGv $date_now-database.sql.tar.gz
cat /opt/web/backup/gita_web.tar.gz | gdrive upload - --parent 1cKL1yzvz388xFUdu6_IpCZvfVdkRzZGv $date_now-files.tar.gz

gdrive list | grep $delete_date-files.tar.gz | awk '{print $1}' | while read line;
    do
        gdrive delete $line
    done

gdrive list | grep $delete_date-database.sql.tar.gz | awk '{print $1}' | while read line;
    do
        gdrive delete $line
    done
Моя официальная страница на FaceBook
Мой микроблог в твиттер

Как вы наверное понимаете, бесплатно сейчас работать никто не будет и если ответ на ваш вопрос потребует больше трех минут времени и вам требуется полноценная консультация, то расценки на мои услуги представленны ниже.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .