Миграция с Amazon S3 с помощью rclone

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

1: Создание API-ключей и определение имени корзины

Прежде чем начать установку и настройку rclone для копирования объектов в новое хранилище, нужно собрать информацию об учетных записях Amazon S3 и вашего нового провайдера блочного хранилища. Вам понадобится набор ключей API этих сервисов и их ограничения для региона, в котором находится ваша корзина.

Сгенерируйте Access Key для нового сервиса блочных хранилищ.

Сохраните Access Key и Secret Key, чтобы потом использовать их в настройке rclone.

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

Генерирование API-ключей Amazon S3

Если у вас еще нет API-ключей  Amazon с разрешением на управление активами S3, вам нужно сгенерировать их сейчас. В консоли AWS кликните на имя своей учетной записи и выберите My Security Credentials в выпадающем меню.

В меню слева выберите Users и нажмите Add user.

Введите User name и выберите Programmatic access в разделе Access type. Чтобы продолжить, нажмите Next: Permissions.

На следующей странице выберите параметр Attach existing policies directly и введите s3read в фильтр Policy type. Убедитесь, что поставили галочку  AmazonS3ReadOnlyAccess и нажмите кнопку Next: Review, чтобы продолжить.

Просмотрите сведения о пользователе на следующей странице, а затем нажмите кнопку Create user.

На последней странице вы увидите учетные данные нового пользователя. Нажмите ссылку Show в столбце Secret access key, чтобы просмотреть учетные данные.

Скопируйте Access key ID и Secret access key в безопасное место, чтобы затем использовать их в настройке rclone. Вы также можете нажать Download .csv, чтобы сохранить учетные данные на своем компьютере.

Ограничения корзины Amazon S3

Теперь нам нужно узнать ограничения для региона и местоположения корзины S3.

Нажмите Services в верхнем меню и введите S3 в появившейся строке поиска. Выберите службу S3, чтобы перейти в консоль управления S3.

Здесь нужно найти название региона корзины, данные которой нужно переместить. Регион будет отображаться рядом с именем корзины.

Нужно найти строку региона и привязку соответствующего местоположения, связанного с регионом этой корзины. Для этого можно обратиться к этой таблице Amazon. К примеру, если название региона – «US East (N. Virginia)», в качестве строки региона нужно использовать us-east-1, а ограничений местоположения  у этого региона нет.

Теперь, когда у вас есть вся необходимая информация об учетной записи Amazon, можно установить и настроить rclone.

2: Установка rclone на локальную машину

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

После этого следуйте одному из приведенных ниже разделов, который соответствует вашей платформе.

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

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

В Ubuntu и Debian можно обновить индекс пакетов и установить unzip с помощью этих двух команд:

sudo apt-get update
sudo apt-get install unzip

В CentOS и Fedora для установки unzip нужно ввести:

sudo yum install 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

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

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

Это откроет в текстовом редакторе новый пустой файл. Подробнее о настройке – в следующем разделе.

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

В терминале перейдите в каталог, в котором хранится архив rclone:

cd ~/Downloads

Распакуйте архив и перейдите  в полученный каталог:

unzip -a rclone*
cd rclone-v*

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

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

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

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

Это откроет в текстовом редакторе новый пустой файл. Переходите к следующему разделу руководства.

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

Если вы используете Windows, откройте каталог Downloads в Windows File Explorer. Выберите архив rclone и щелкните правой кнопкой мыши. В появившемся контекстном меню выберите Extract All.

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

Утилиту rclone.exe необходимо запускать из командной строки. Чтобы открыть новое окно командной строки (программа cmd.exe), нажмите кнопку Windows в нижнем левом углу, наберите cmd и выберите Command Prompt.

Введите путь к извлеченным файлам 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, поэтому обязательно исправьте ее на rclone.exe, если вы работаете в Windows.

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

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

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

3: Настройка учетных записей

В этом файле можно определить ученые записи Amazon S3 и нового блочного хранилища. Это позволит rclone управлять данными этих аккаунтов.

Сначала укажите данные аккаунта S3. Вставьте в файл следующее:

[s3]
type = s3
env_auth = false
access_key_id = aws_access_key
secret_access_key = aws_secret_key
region = aws_region
location_constraint = aws_location_constraint
acl = private

Эти параметры определяют новый «удаленный» экземпляр rclone под названием s3. Тип s3 помогает rclone определить подходящий способ взаимодействия с ресурсом удаленного хранилища и управления им. Учетные данные S3 определяются в самом файле конфигурации, поэтому в env_auth нужно установить false.

Затем идут переменные access_key_id и secret_access_key, где нужно указать Access Key и Secret Key S3 соответственно. Обязательно измените условные значения на ваши учетные данные S3.

Теперь нужно указать ограничения региона и местоположения в соответствии со свойствами вашей корзины S3, которые вы нашли в таблице Amazon. Политика управления доступом должна быть «private», иначе активы будут общедоступны по умолчанию.

Далее можно добавить аналогичный раздел с данными о новом хранилище:

. . .
[mybucket]
type = s3
env_auth = false
access_key_id = example_access_key
secret_access_key = example_secret_key
endpoint = example.endpoint.com
acl = private

Вы можете указать в параметре type значение s3, если ваш новый провайдер предоставляет S3-совместимый API. env_auth нужно отключить.

В переменных access_key_id и secret_access_key укажите ключи аккаунта нового блочного хранилища. В параметре endpoint укажите конечную точку, которую вы определили ранее. Параметр acl должен иметь значение private, чтобы защитить активы от посторонних.

Сохраните и закройте файл.

В MacOS и Linux обязательно заблокируйте доступ к файлу, он содержит конфиденциальные данные:

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

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

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

Настройка завершена. Теперь попробуйте переместить файлы в новую корзину.

Проверьте настройку rclone:

rclone listremotes
s3:
mybucket:

Утилита rclone может определить оба хранилища.

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

rclone lsd s3:
-1 2017-10-20 15:32:28        -1 source-of-files

Согласно выводу, в аккаунте S3 была обнаружена только корзина source-of-files.

Если у вас уже есть корзина в новом хранилище, вы можете повторить эту процедуру:

rclone lsd mybucket:
-1 2017-10-25 19:00:35        -1 existing- bucket

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

rclone tree s3:source-of-files
/
├── README.txt
├── demo_dir
│   ├── demo1
│   └── demo2
└── media
├── Social Rebrand Presentation 032815.ppt
├── TechnicLauncher.jar
├── nda_template.docx
├── textfile.txt
└── the_mother_of_all_demos.mp4
2 directories, 8 files

После этого вы можете скопировать все файлы в новую корзину:

rclone sync s3:source-of-files mybucket:dest-of-files

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

Если все пройдет без ошибок, rclone создаст новую корзину (если такой не существует) и переместит в нее файлы из хранилища S3.

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

rclone tree mybucket:dest-of-files
/
├── README.txt
├── demo_dir
│   ├── demo1
│   └── demo2
└── media
├── Social Rebrand Presentation 032815.ppt
├── TechnicLauncher.jar
├── nda_template.docx
├── textfile.txt
└── the_mother_of_all_demos.mp4
2 directories, 8 files

Более надежную проверку выполняет команда check. Она сравнивает все объекты в удаленных хранилищах:

rclone check s3:source-of-files mybucket:dest-of-files
2017/10/25 19:51:36 NOTICE: S3 bucket dest-of-files: 0 differences found
2017/10/25 19:51:36 NOTICE: S3 bucket dest-of-files: 2 hashes could not be checked

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

Заключение

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

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

Tags: , ,