Перемещение хранилища объектов между регионами с помощью Rclone

Сегодня множество облачных провайдеров предоставляют своим пользователям хранилища объектов – это простой и недорогой способ обслуживания больших объемов данных.

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

Создание ключей API и поиск конечных точек хранилищ

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

Сначала создайте API-ключ (инструкции можно найти в документации вашего облачного провайдера).

Сохраните ключ доступа и секретный ключ – с их помощью позже мы сможем предоставить инструменту Rclone доступ к учетной записи.

Поиск S3-совместимой конечной точки

Далее нужно найти конечную точку для каждого хранилища. Вы можете просмотреть конечную точку хранилища в панели управления (чаще всего она находится в разделе Настройки).

Как правило, в конечной точке указывается регион, в котором вы создали хранилище, за которым следует .my_odject_storage.com (зависит от вашего провайдера). Запишите конечную точку для обоих ваших хранилищ – мы будем использовать эту информацию при создании нашей конфигурации rclone.

Установка Rclone

Теперь можно установить Rclone. Вы можете сделать это на своем локальном компьютере или – если у вас ограниченная пропускная способность – на удаленном сервере, расположенном в регионе исходного или целевого хранилища.

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

Как только вы загрузите zip-файл Rclone на свой компьютер, выберите раздел, соответствующий вашей платформе, и следуйте ему.

Установка Rclone на Linux

Прежде чем мы сможем распаковать архив, нужно убедиться, что на данном сервере доступна утилита unzip.

Если вы работаете в Ubuntu или Debian, вы можете обновить локальный индекс пакетов и разархивировать его, набрав:

sudo apt update
sudo apt install unzip

Чтобы установить утилиту в CentOS или Fedora, наберите:

sudo yum install unzip

После установки unzip перейдите в каталог, куда вы загрузили архив rclone:

cd ~/Downloads

Далее разархивируйте пакет и перейдите в новый каталог:

unzip rclone*
cd rclone-v*

Здесь можно скопировать двоичный файл в каталог /usr/local/bin, чтобы он был доступен для всей системы:

sudo cp rclone /usr/local/bin

Затем нужно добавить в систему страницу мануала, чтобы можно было легко получить справку по синтаксису команды и доступным опциям. Создйте локальный каталог, а затем скопируйте в него файл rclone.1:

sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1

Затем обновите базу данных man, чтобы добавить новую справочную страницу в систему:

sudo mandb

После этого можно создать каталог конфигурации Rclone и открыть конфигурационный файл:

mkdir -p ~/.config/rclone
nano ~/.config/rclone/rclone.conf

Это откроет в текстовом редакторе пустой файл. Перейдите в раздел «Настройка Rclone», чтобы продолжить.

Установка Rclone в macOS

Если вы используете систему macOS, перейдите в терминале к каталогу, в который вы загрузили zcl-файл rclone:

cd ~/Downloads

Затем разархивируйте файл и перейдите в новый каталог:

unzip -a rclone*
cd rclone-v*

Создайте каталог /usr/local/bin, а затем скопируйте в него двоичный файл rclone:

sudo mkdir -p /usr/local/bin
sudo cp rclone /usr/local/bin

Затем можно создать конфигурационный каталог и открыть файл конфигурации:

mkdir -p ~/.config/rclone
nano ~/.config/rclone/rclone.conf

Это откроет в текстовом редакторе пустой файл. Перейдите в раздел «Настройка Rclone», чтобы продолжить.

Установка Rclone в Windows

Если вы работаете в системе Windows, перейдите в каталог «Загрузки» в проводнике Windows. Выберите zcl-файл rclone и щелкните правой кнопкой мыши. В появившемся контекстном меню выберите «Извлечь все…».

Следуйте инструкциям, чтобы извлечь файлы из zip-архива.

Утилита rclone.exe должна быть запущена из командной строки. Откройте новое окно командной строки (программа cmd.exe), нажав кнопку Windows в левом нижнем углу, введите cmd и выберите «Командная строка».

Внутри перейдите к пути rclone, который вы извлекли:

cd "%HOMEPATH%\Downloads\rclone*\rclone*"

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

dir
10/23/2017  01:02 PM    <DIR>          .
10/23/2017  01:02 PM    <DIR>          ..
10/23/2017  01:02 PM                17 git-log.txt
10/23/2017  01:02 PM           296,086 rclone.1
10/23/2017  01:02 PM        16,840,192 rclone.exe
10/23/2017  01:02 PM           315,539 README.html
10/23/2017  01:02 PM           261,497 README.txt
5 File(s)     17,713,331 bytes
2 Dir(s)  183,296,266,240 bytes free

Вам нужно будет переходить в этот каталог всякий раз, когда вы хотите использовать команду rclone.exe.

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

Затем мы можем создать каталог и открыть конфигурационный файл, чтобы определить учетные данные S3 и хранилищ:

mkdir "%HOMEPATH%\.config\rclone"
notepad "%HOMEPATH%\.config\rclone\rclone.conf"

Это откроет в текстовом редакторе пустой файл.

Настройка Rclone

В конфигурационном файле мы настроим два хранилища объектов как Rclone удаленные устройства (remotes). Вставьте следующий раздел в файл, чтобы определить первый регион:

[storage-sfo2]
type = s3
env_auth = false
access_key_id = your_spaces_access_key
secret_access_key = your_spaces_secret_key
endpoint = sfo2.my_odject_storage.com
acl = private

Здесь мы определили новое удаленное устройство rclone по имени storage-sfo2. Измените имя региона в соответствии с вашими данными.

Мы установили в поле type значение s3, чтобы rclone знал, как правильно взаимодействовать с ресурсами удаленного хранилища и управлять им. Позже мы определим в этом файле учетные данные для доступа к хранилищу, поэтому можно установить значение false для env_auth.

Затем идут переменные access_key_id и secret_access_key, где должны находиться соответствующие ключи хранилища. Обязательно укажите здесь данные, связанные с вашей учетной записью.

В endpoint нужно указать конечную точку хранилища, которую мы нашли ранее.

В конце идет параметр acl со значением private, это защитит активы хранилища (вы сможете поделиться ими).

Затем создайте копию только что созданного конфигурационного блока, но укажите новое имя и конечную точку, чтобы настроить второй регион:

. . .
[storage-nyc3]
type = s3
env_auth = false
access_key_id = your_spaces_access_key
secret_access_key = your_spaces_secret_key
endpoint = nyc3.my_odject_storage.com
acl = private

Как видите, остальные конфигурации полностью совпадают с параметрами первого региона. Сохраните и закройте файл.

В macOS и Linux обязательно заблокируйте к конфигурационному файлу доступ, поскольку в нем находятся учетные данные:

chmod 600 ~/.config/rclone/rclone.conf

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

Теперь можно использовать rclone для синхронизации данных между хранилищами.

Копирование объектов из S3 в хранилища

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

Начните с проверки удаленных хранилищ rclone:

rclone listremotes
storage-nyc3:
storage-sfo2:

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

Мы можем просмотреть доступные хранилища, запросив у rclone связанные с ними «каталоги» (обязательно добавьте двоеточие в конец имени удаленного хранилища):

rclone lsd storage-sfo2:
-1 2019-09-23 13:07:54        -1 source-space

Вы можете повторить процедуру для другого региона:

rclone lsd storage-nyc3:
-1 2019-09-23 13:08:28        -1 destination-space

Как видите, здесь четко обозначено исходное и целевое хранилище. Чтобы просмотреть содержимое хранилища, можно использовать команду tree. Передайте ей имя удаленного хранилища, затем поставьте двоеточие и укажите название «каталога», который вы хотите просмотреть (это имя хранилища):

rclone tree storage-sfo2:source-space
/
├── Photos
│   ├── 2019.01.24-23.10.27.png
│   ├── 2019.01.24-23.11.39.png
│   ├── 2019.01.24-23.18.00.png
│   ├── 2019.01.24-23.18.18.png
│   ├── 2019.01.24-23.18.30.png
│   ├── 2019.01.24-23.19.32.png
│   ├── 2019.01.24-23.23.06.png
│   ├── 2019.01.24-23.23.53.png
│   ├── 2019.01.24-23.25.14.png
│   ├── 2019.01.24-23.26.22.png
│   ├── 2019.01.25-12.43.35.png
│   ├── 2019.03.13-14.35.34.png
│   └── 2019.03.13-14.40.52.png
└── Photos.zip
1 directories, 14 files

Вы можете скопировать файлы и переместить их между хранилищами с помощью команды:

rclone sync storage-sfo2:source-space storage-nyc3:destination-space

Если все прошло хорошо, rclone начнет копировать объекты между двумя хранилищами.

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

Когда передача данных будет завершена, вы сможете убедиться, что объекты переместились в новое хранилище. Это можно сделать с помощью подкоманды tree:

rclone tree storage-nyc3:destination-space
/
├── Photos
│   ├── 2019.01.24-23.10.27.png
│   ├── 2019.01.24-23.11.39.png
│   ├── 2019.01.24-23.18.00.png
│   ├── 2019.01.24-23.18.18.png
│   ├── 2019.01.24-23.18.30.png
│   ├── 2019.01.24-23.19.32.png
│   ├── 2019.01.24-23.23.06.png
│   ├── 2019.01.24-23.23.53.png
│   ├── 2019.01.24-23.25.14.png
│   ├── 2019.01.24-23.26.22.png
│   ├── 2019.01.25-12.43.35.png
│   ├── 2019.03.13-14.35.34.png
│   └── 2019.03.13-14.40.52.png
└── Photos.zip
1 directories, 14 files

Для более надежной проверки используйте подкоманду check. Эта команда сравнит объекты в обоих регионах:

rclone check storage-sfo2:source-space storage-nyc3:destination-space
2019/09/23 14:29:11 NOTICE: S3 bucket destination-space: 0 differences found
2019/09/23 14:29:11 NOTICE: S3 bucket destination-space: 14 matching files

Команда сравнивает значения хеш-функции каждого объекта в каждом хранилище. Вы можете получить сообщение о том, что некоторые хеши нельзя сравнить. Чтобы проверить целостность передачи в подобном случае, вы можете повторно запустить команду с флагом —size-only (который выполняет сравнение только на основе размера файла) или с флагом —download (который загружает каждый объект с обоих удаленных устройств для локального сравнения).

Заключение

Теперь вы умеете перемещать объекты между двумя удаленными хранилищами в разных регионах и проверять целостность данных после этой операции.

Клиент rclone можно использовать для многих других задач по управлению хранилищами объектов, включая загрузку файлов, монтирование в локальной файловой системе, а также создание или удаление дополнительных хранилищ. Чтобы узнать больше о функциональности этого инструмента, почитайте справку (man).

Tags: , ,