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

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

 
 
Логотип GITA-DEV

Автор: Черноусов Антон aka Gita-Dev
Опубликовано: 12 Мар 2018 (последние правки 1 месяц)

backup cv git install tar копирование

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

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

Похожие статьи

Современный подход к резервному копированию контейнеров Linux-серверов

Современный подход к резервному копированию контейнеров Linux-серверов

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


Перенос Rocket.Chat на другой сервер (резервное копирование и восстановление)

Перенос Rocket.Chat на другой сервер (резервное копирование и восстановление)

Сегодня я расскажу как можно осуществлять резервное копирование Rocket.Chat. Но как говорится, мало настроить резервное копирование, надо в дальнейшем еще и восстановиться с созданной резервной копии, поэтому помимо создания резервной копии Rocket.Chat рассмотрим еще и ее восстановление на новом сервере.


Atlassian Confluence - установка, резервное копирование, восстановление и обновление

Atlassian Confluence - установка, резервное копирование, восстановление и обновление

В статье Установка Attlassian Jira в Linux Debian 9.3 я начал рассказывать как я обновлял довольно старый инстанс Jira и его практически пришлось устанавливать заново и импортировать данные в новую версию из старой. Сегодня пришло время обновить и Attlassian Confluence и честно говоря отличий от обновления Jira не так уж и много, а заодно напишу небольшую инструкцию по установке и настройке.


Резервное копирование сервера (простой скрипт резервного копирования VPS сервера)

Резервное копирование сервера (простой скрипт резервного копирования VPS сервера)

Резервное копирование данных в небольших проектах это наверное самая больная тема и если вы откроете любой фриланс-сайт, то увидите огромное количество заявок на восстановление данных разной степени изощренности, причем как показывает практика на 60% таких заявок можно или ставить крест сразу, или же они требуют несовместимых с предлагаемой оплатой трудозатрат. И конечно всего этого можно было избежать если правильно настроить резервное копирование.


GITLAB - резервное копирование и восстановление

GITLAB - резервное копирование и восстановление

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


Отзывы и комментарии