Давно уже ребята задают вопросы, как организовать резервное копирование в облако, при этом не тратя много сил, времени и лучше всего бесплатно. Поводом для написания статьи послужил очередной диалог на эту тему. По итогами долгой переписки с коллегами, объяснения теории и перебора вариантов практической реализации, я решил написать об этом. Все просто как пять пальцев, но часто спрашивают КАК.

Резервное копирование в облако — тема уже давно не новая. Каждый выбирает своего облачного провайдера, свои инструменты для копирования и пр. Вендоров много, здесь мы рассмотрим именно Google Cloud Platform. Мы все реализуем самыми простыми скриптами, без покупки софта, покупки дисковых хранилищ и прочего.

Что мы имеем


В тонкости инфраструктуры вдаваться не станем, каждому свое. В итоге имеется сервер резервного копирования, на который сливаются копии файлового хранилища и данных с машин, пакуются в архивы и падают на два дисковых массива. В итоге принято решение о выносе одной копии за периметр.

Два вида копирования


Да, нам нужно было применить две схемы резервирования различных данных:

  1. Репликация существующего набора копий на сервере
  2. Хранение копий длительное время только в облаке

Начнем с клауда.

Подготовка облака


Создаем триал на 300 долларов в Google Cloud Platform (300 долларов дается на год, хватит надолго).

После подключения триала, нам будет доступна консоль. В меню переходим в раздел Storage.

image

Нам будет предложено создать проект, создаем, называем как нам заблагорассудится. После создания проекта, в разделе Storage создадим Сегмент, это и будет наше хранилище для копий. Называем как удобно, для статьи я назвал backwin для репликации и отдельно создал backupwin для копирования и хранения по дням. Класс хранилища мы укажем самый дешевый, применяемый для резервных копий Coldline. Стоимость гигабайта в нем составляет $0,007 в месяц.

image

Подготовка машины


С сервером все просто. Идем в раздел документации Google Cloud, открываем раздел Cloud SDK и действуем по инструкциям. В моем случае была машина с Windows Server, потому скачиваем, ставим. Достаточно стандартных параметров при установке, потому далее-далее-готово.

Открываем командную строку, пишем
gcloud init
нам будет предложено авторизоваться в окне браузера. Вводим логин-пароль от Google Cloud. Далее будет предложено выбрать в окне командной строки проект, выбираем созданный ранее. При вопросе включить ли API — Да, Хотим ли управлять Compute Engine — нет.

Репликация хранилища


В двух словах, зачем она нам была нужна. Есть машина на которой имеется набор резервных копий в определенном каталоге (c:\bak\). Это зашифрованные архивы и их нужно хранить где-то снаружи. Без проблем. Открываем командную строку, пишем:

gsutil -m rsync -r -d -e -C file://c:\bak gs://bakwin

  • c:\bak — каталог с копиями для репликации в облако
  • bakwin — "Сегмент" в облачном хранилище Google Cloud Storage, который мы создали ранее

Тут стоит оговориться, что мы экспериментировали с машиной Windows, но точно так-же это работает и на Linux, только путь к каталогу поправить нужно.

Команда выполнена, все улетело в облако. Сохраняем как скрипт, включаем в планировщик. Все! Реально пять минут. Еще немного тюнинга и скрипт будет заточен под конкретную задачу и обработку ошибок.

Резервное копирование каталога


В этом случае нам потребовалось хранить данные за каждый день в отдельном каталоге в Google Cloud Storage. Тоже оказалось все просто, берем бутерброд и наливаем кофе.

Для любителей PowerShell, я делал именно на нем т.к. машина на Windows Server. Модули у нас установились в системе вместе с Cloud SDK. Потому для начала, кроме Import-Module GoogleCloud нам ничего не потребуется.

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

$folder = "C:\Bak"
$bucket = "gs:\backupwin"

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

$date = Get-date -format dd.MM.yyyy
$bucket = $bucket + "\" + $date
mkdir $bucket

Собственно сам скрипт для копирования:

cd $folder
$files = Get-ChildItem -Recurse -Attributes !Directory
$data = @()
foreach ($file in $files) {
      $objectPath = $file | Resolve-Path -Relative
      $data += @{file = $file; objectPath = $objectPath} # 
}
cd $bucket
foreach($element in $data) {
      Write-Host $element.objectPath
      New-Item -ItemType File -Path $element.objectPath
}

Проверяем, работает. Составляем в скрипт, ставим в планировщик. Вот и вся любовь.

По стоимости хранения 10 Тб данных (в облачном хранилище) оплата будет от 70 долларов в месяц. В целом все работает. Тюнинг скриптов под конкретные условия не применялся.

Вообще резервное копирование в Google Cloud Storage можно использовать и вместе с таким ПО как Cloudberry, Veritas и др. и использовать облачное хранилище как дополнительное пространство для копий. В случае с железом, большинство вендоров уже на уровне хранилищ поддерживают их резервирование в Google Cloud.

Вывод: дешево, быстро, надежно, а перевод из пробной версии в коммерческую происходит без каких-либо перенастроек и банковских карт.
Поделиться с друзьями
-->

Комментарии (10)


  1. ArjLover
    05.07.2017 20:55
    +2

    10ТБ у хетцнера стоит стоит 40евро в месяц, все ж заметно повыгоднее.
    https://www.hetzner.com/storage-box
    подцепляешь как удобно, ну дальше сам конечно…
    Да и с другой стороны 300$ — это как раз один HDD на 10ТБ, но не на год, а навсегда.


    1. HELPerado
      06.07.2017 09:53

      Хетцнер конечно же заманчив, тут бесспорно.
      Но HDD на 10 ТБ это не наш метод, да и в правило бэкапа «3,2,1» он слабо вписывается
      Автору плюсик в карму за полезную информацию.


    1. RomanGN
      06.07.2017 10:10

      Все супер, 40 евро в месяц. Но:
      Оплата картой, это не всем удобно. Если платеж с корпоративной карты, то налоговая спросит «где НДС?» (проходили такое)
      Предоплата за выделенный объем, тут же сколько реально используем, за столько и платим, без всяких тарифов и постоплата.
      По жесткому на 10Тб — легендарный «3,2,1»
      А в целом — каждому свое. Я же конкретный вариант рассмотрел, а не сравнивал с кем-то. Ну точнее сначала хотел сравнить, потом одумался :)
      На старой работе вообще на USB HDD мне шеф бэкапить предлагал, я и не спорил, его проблемы :)


  1. MazayZaycev
    06.07.2017 12:19

    А есть ли вариант с шифрованием бэкапа? С учетом склонности гугла гугула к анализу пользовательских данных это не будет лишним.


    1. RomanGN
      06.07.2017 13:03

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


  1. mvalery
    06.07.2017 14:17

    По второй части — «Резервное копирование каталога».
    Пермишен в Google Cloud Storage сохраняются?
    Интересует и для Windows и для Linux.


    1. RomanGN
      06.07.2017 14:18

      нет, не сохраняются. Они при таком копировании в любом клауде не сохранятся. Это объектное хранилище.


    1. aynur_safin
      06.07.2017 22:15

      Duplicati 2.0 смотрели?


      1. RomanGN
        06.07.2017 22:22

        Я немного не в той сфере работаю, чтобы выбирать себе :) Меня периодически (буквально через день) спрашивают, как прикрутить конкретно взятое облако к уже используемым скриптам копирования. Я же не о выборе между несколькими вариантами и вендорами писал.
        Duplicati 2.0 — прикольная штука, многим будет интересна


        1. aynur_safin
          06.07.2017 23:04

          Ясно, понятно, но я не вам отвечал. )