Как управлять резервным копированием в облако с помощью дублирования

Вступление

Duplicacy - это кроссплатформенный инструмент резервного копирования, который предлагает ряд функций, включая инкрементное резервное копирование, параллельное резервное копирование и шифрование на стороне клиента, которые направлены на оптимизацию процесса резервного копирования данных в облако. Версия CLI (интерфейс командной строки) для Linux бесплатна для личного использования, но для коммерческих пользователей требуется платная лицензия. Кроме того, Duplicacy доступен для MacOS и Windows с графическим интерфейсом, и эта версия требует, чтобы как личные, так и коммерческие пользователи платили за лицензию.

Основанная на идееlock-free deduplication, Duplicacy была разработана для безопасного управления резервным копированием в широкий спектр облачных сервисов хранения. Когда клиент Duplicacy создает и сохраняет новый чанк, другие клиенты, использующие тот же сегмент памяти, могут видеть, что чанк уже существует, и поэтому не будут загружать его снова. Это позволяет отдельным клиентам обмениваться и создавать резервные копии идентичных данных без дополнительных усилий по отслеживанию резервных копий.

В этом руководстве представлен общий обзор того, как установить версию CLI Duplicacy и использовать ее для управления типичным процессом резервного копирования данных с помощью DigitalOcean Space. Мы также продемонстрируем, как выполнить резервное копирование общего репозитория из нескольких дроплетов в одно и то же пространство, а также как сделать резервную копию моментальных снимков в нескольких пространствах для повышения безопасности данных.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • Two Ubuntu 16.04 Droplets настроен с использованием нашегоinitial server setup guide. Вы можете называть свои серверы как угодно, но для ясности они будут обозначаться в этом руководстве какserver-01 иserver-02.

  • Two DigitalOcean Spaces. См. НашIntroduction to DigitalOcean Spaces для получения инструкций о том, как их запустить и запустить.

  • An Access key and a Secret key for your Spaces. Чтобы создать их, посетитеAPI page на панели управления DigitalOcean.

Имея эти предварительные условия, вы готовы к установке Duplicacy.

Установка дубликатов

Последнюю версию Duplicacy CLI можно загрузить (без лицензии для личных пользователей) изDuplicacy GitHub repository с помощьюwget.

Выполните следующие команды наboth server-01 and server-02, чтобы загрузить Duplicacy на каждый из них (заменив ссылку для загрузки последней версии):

sudo wget -O /opt/duplicacy https://github.com/gilbertchen/duplicacy/releases/download/v2.0.10/duplicacy_linux_x64_2.0.10

Затем создайте символическую ссылку между местом загрузки и новым каталогом в/usr/local/bin:

sudo ln -s /opt/duplicacy /usr/local/bin/duplicacy

Наконец, сделайтеduplicacy исполняемым:

sudo chmod 0755 /opt/duplicacy

Теперь дубликат должен быть установлен на каждую из ваших капель, и теперь вы готовы настроить его для использования вашего пространства.

Инициализация вашего репозитория и настройка дублирования

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

Командаinit принимает следующий синтаксис:

duplicacy init repository_id s3://region@endpoint/space_name
  • repository_id: это метка, используемая Duplicacy для различения разных репозиториев. Если вы планируете выполнять резервное копирование одного и того же хранилища из нескольких источников (как мы сделаем в следующем шаге этого учебного пособия), идентификатор хранилища должен быть одинаковым на обеих каплях.

  • region:region - это название региона, в котором находится ваша капля.

  • endpoint: конечная точка - это статическое местоположение, используемое серверными веб-API для указания, где находятся определенные ресурсы. Для DigitalOcean Spaces конечной точкой будет регион, за которым следует.digitaloceanspaces.com, как вnyc3.digitaloceanspaces.com. Имя конечной точки вашего Space также можно скопировать непосредственно из панели управления Spaces на вкладке «Настройки».

  • space_name: это имя вашего пространства, которое было указано при его создании. Имейте в виду, что это не URL вашего пространства. Если URL вашего пространстваhttps://example_space.nyc3.digitaloceanspaces.com, его имя будет простоexample_space.

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

duplicacy init repository_id s3://region@endpoint/space_name/folder_name/

Получив эти сведения, вы готовы создать каталог репозиторияon each of your Droplets с помощью командыmkdir. После этого перейдите в свои новые репозитории с помощьюcd:

mkdir project-repository
cd project-repository/

Используяproject-repository/ в качестве рабочего каталога, выполните следующую командуinit наserver-01. Обязательно замените выделенные значения своими собственными данными:

duplicacy init project_01 s3://[email protected]/example_space

Стоит отметить, что вы можете включить шифрование с дублированием, используя параметр-e с командойinit, как показано ниже:

duplicacy init -e project_01 s3://[email protected]/example_space

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

После запуска командыinit Duplicacy запросит у вас ключи доступа и секретные ключи, которые можно скопировать изAPI page панели управления.

OutputEnter S3 Access Key ID:ExampleAccessKeyGBBI
Enter S3 Secret Access Key:ExampleSecretKeyEC1wnP2YiHobVcSBaZvLoFXXlnA

И это выведет следующее:

Output/home/sammy/project-repository will be backed up to s3://[email protected]/example_space with id project_01

Когда вы запускаете командуinit, она создает в вашем репозитории каталог с именем.duplicacy/, содержащий файл с именемpreferences. Этот файл содержит информацию о вашем Пространстве, а также любые опции шифрования или хранения, которые вы указали. Если позже вы решите внести изменения в конфигурацию дублирования, вы можете либо отредактировать файлpreferences напрямую, либо удалить его. Файл будет воссоздан при следующем запуске командыinit в этом репозитории.

Теперь повторите командуiniton your second Droplet:

duplicacy init project_01 s3://[email protected]/example_space

После того, как вы снова добавите свои ключи доступа, вы увидите вывод, немного отличающийся от первого капли:

OutputThe storage 's3://[email protected]/example_space' has already been initialized
Compression level: 100
Average chunk size: 4194304
Maximum chunk size: 16777216
Minimum chunk size: 1048576
Chunk seed: 6475706c6963616379
/home/sammy/project-repository will be backed up to s3://[email protected]/example_space with id project_01

Репозитории обоих ваших серверов теперь инициализированы, но есть еще один шаг, который вы можете предпринять, чтобы настроить дублирование. В настоящее время Duplicacy будет запрашивать ваши ключи доступа и секретные ключи каждый раз, когда вы создаете резервную копию своих данных, что довольно быстро становится утомительным. Чтобы избежать этого, вы можете использовать командуset Duplicacy для записи учетных данных вашего пространства в файлpreferences Duplicacy. Выполните следующие командыon each of your servers, чтобы Duplicacy сохранила ваши ключи доступа и секретные ключи соответственно:

duplicacy set -key s3_id -value ExampleAccessKeyGBBI
duplicacy set -key s3_secret -value ExampleSecretKeyEC1wnP2YiHobVcSBaZvLoFXXlnA

Теперь вы готовы использовать Duplicacy для резервного копирования каждого хранилища ваших дроплетов в одно из ваших пространств!

Резервное копирование одного репозитория из нескольких источников

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

Чтобы проверить функциональность резервного копирования Duplicacy, используйтеtouch, чтобы заполнитьproject-repositoryon each of your Droplets парой фиктивных файлов:

touch /project-repository/file-1.txt
touch /project-repository/file-2.txt

Затем наserver-01 используйте команду Duplicacybackup, чтобы создать снимок вашего репозитория и загрузить его в свое пространство. Поскольку вы инициировали хранилище только с одним хранилищем, вам не нужно указывать другие параметры для резервного копирования файлов:

duplicacy backup

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

OutputNo previous backup found
Indexing /home/mark/project-repository
Listing all chunks
Packed file-1.txt (0)
Packed file-2.txt (0)
Backup for /home/sammy/project-repository at revision 1 completed

Теперь попробуйте сделать резервную копию вашего репозитория изserver-02:

duplicacy backup
OutputLast backup at revision 1 found
Indexing /home/sammy/project-repository
Backup for /home/sammy/project-repository at revision 2 completed

Вы заметите, что, поскольку репозитории вserver-01 иserver-02 были идентичны, Duplicacy не упаковывала файлы, как это было, когда вы запускали командуbackup в своей первой капле. Чтобы увидеть, что произойдет, когда вы создадите резервную копию немного другого снимка, откройте один из фиктивных файлов наserver-02 и добавьте к нему текст:

nano file-1.txt

project-repository/file-1.txt

The quick brown fox jumped over the lazy dogs.

Сохраните и закройте файл, введяCTRL - X,Y, затемENTER, а затем снова выполните командуbackup:

duplicacy backup
OutputStorage set to s3://[email protected]/example_space
Last backup at revision 2 found
Indexing /home/sammy/project-repository
Packed file-1.txt (45)
Backup for /home/sammy/project-repository at revision 3 completed

Поскольку в один из файлов вашего репозитория были внесены новые изменения, Duplicacy упаковал этот файл и загрузил его как часть версии 3.

Вы можете использовать командуrestore, чтобы вернуть ваш репозиторий к предыдущей ревизии, используя опцию-r и указав номер ревизии. Обратите внимание, что существующие файлы не будут перезаписаны, если не указан параметр-overwrite, например:

duplicacy restore -overwrite -r 2

После выполнения командыrestore вы можете подтвердить, что Duplicacy действительно перезаписалfile-1.txt, проверив, есть ли в нем какое-либо содержимое:

cat file-1.txt

Если эта команда не дает никаких результатов, тоfile-1.txt снова становится пустым файлом, и вы успешно откатили свой репозиторий до предыдущей версии.

Резервное копирование в несколько хранилищ

Хранение резервных копий в нескольких удаленных местах былоa common data security practice for many years. Однако процесс резервного копирования файлов по нескольким адресатам может оказаться утомительным и привести к снижению производительности. Однако существует ряд сторонних инструментов резервного копирования, которые могут обеспечить быстрое решение для резервного копирования данных в несколько мест в облаке.

Чтобы продемонстрировать эту функциональность в Duplicacy, добавьте второе пространство в репозиторийserver-01. Вы не сможете сделать это, повторно запустив командуinit, потому что этот репозиторий уже был инициирован Duplicacy и связан с вашим первым пространством. Для этих сценариев вам нужно будет использовать командуadd, которая подключает уже инициализированный репозиторий к другому ведру хранилища.

Команда Duplicacyadd использует следующий синтаксис:

duplicacy add storage_id repository_id s3://region@endpoint/example_space_02

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

Имея в виду эту информацию, добавьте свой второй пробел в хранилище:

duplicacy add space_02 project_01 s3://[email protected]/example_space_02

Теперь у вас все готово для резервного копирования вашего хранилища во второе пространство. Рекомендуется сделать это, сначала сделав резервную копию своего репозитория в место хранения по умолчанию, а затем используя команду Duplicacycopy, чтобы скопировать идентичную резервную копию во второе место хранения:

duplicacy backup
duplicacy copy -from default -to space_02

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

Заключение

В сочетании с DigitalOcean Spaces, Duplicacy позволяет пользователям гибко управлять облачным резервным копированием. Если вам нужно выполнить резервное копирование одного и того же хранилища с нескольких компьютеров или вам необходимо создать резервную копию одного хранилища в нескольких местах в облаке, Duplicacy может стать неотъемлемой частью вашего решения для резервного копирования.

Если вам интересно узнать больше о том, как использовать Duplicacy, вы можете проверитьproject wiki on GitHub. Кроме того, если вы хотите узнать больше о стратегиях резервного копирования в целом, см. Наше руководство поHow To Choose an Effective Backup Strategy for your VPS или наше сравнение междуObject Storage vs. Block Storage Services.

Related