Тариф успешно добавлен в корзину
В корзину
url image

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

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

Rclone — это удобная утилита командной строки для синхронизации и управления данными в облачных хранилищах, которая работает через интерфейс S3 API и обладает широким набором функций. 

Далее подробно разберем, как установить и настроить Rclone, а затем перенести данные между двумя S3-совместимыми хранилищами. Вы узнаете, как выполнить миграцию быстро, безопасно и с минимальными трудозатратами.

Минимальные требования 

Для работы утилиты потребуется физическая или виртуальная машина с операционной системой, для которой доступна сборка rclone. В настоящее время поддерживается большинство известных ОС: Windows, Linux, macOS, FreeBSD, OpenBSD и другие. Полный перечень можно посмотреть в репозитории проекта на GitHub

Установка Rclone

Рассмотрим процесс установки утилиты для разных ОС.

Linux/macOS

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

curl https://rclone.org/install.sh | sudo bash

На современных версия Debian и Ubuntu достаточно использовать пакетный менеджер:

apt install rclone  

В случае RHEL-based систем, таких как CentOS, AlmaLinux, или Rocky Linux установка также может быть произведена через пакетные менеджеры. При этом нужно убедиться в том, что репозиторий EPEL подключен:

yum install epel-release
yum install rclone
dnf install epel-release
dnf install rclone

Windows

В случае Windows скачайте архив для установки на сайте разработчика. А затем распакуйте его в каталог на своем устройстве.

Далее необходимо добавить каталог с файлами Rclone в переменную окружения:

  1. Скопируйте путь до каталога с Rclone.

  2. Откройте Свойства системы (System Properties), нажав сочетание клавиш Win + R и выполнив команду:

sysdm.cpl
Открытие "Свойства системы (System Properties)" через вызов "Выполнить"
  1. В открывшемся окне перейдите на вкладку Дополнительно и нажмите Переменные среды (Environment Variables) в нижней части: 

Переменные среды (Environment Variables) в Свойствах системы (System Properties)
  1. Найдите параметр PATH и нажмите Изменить (Edit):

Изменение переменной PATH
  1. Добавьте путь каталога с распакованным Rclone в список и сохраните изменения: 

Добавление rclone в переменную окружения PATH

Подготовка к работе

Перед запуском копирования  нам нужно ввести авторизационные данные хранилища-источника и хранилища-приёмника. В терминологии rclone S3-хранилище при регистрации называется “remote”. 

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

Зарегистрировать remote можно стандартными средствами утилиты (через интерактивное меню) или создав текстовый файл конфигурации вручную. Рассмотрим оба способа. 

Настройка через интерактивное меню

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

rclone config
Запуск настройки через rclone config

Выбираем n и создаём новый remote, то есть регистрируем данные S3 в конфигурации rclone.

Далее указываем имя хранилища. Имя может быть любым, удобным для вас. Например, назовем S3-источник “source”, а S3-приёмник, на который мы будем копировать, — “destination”. 
 

Ввод имени remote

Выбираем тип хранилища, указывая S3, то есть пункт 5 из списка:
 

Выбор типа хранилища в rclone

Далее указываем провайдера хранилища. Здесь достаточно просто выбрать пункт 24 (Другой):

Выбор провайдера S3 хранилища в rclone

Указываем, что реквизиты доступа будут переданы при настройке. Для этого выбираем 1 и жмём Enter:

Выбор способа регистрации ключей в rclone

Вводим реквизиты S3: Ключ доступа (Access Key ID) и Секретный ключ (Secret Key). Ключи необходимо узнать у провайдера S3. У FirstVDS их можно найти в разделе Доступы для выбранного хранилища: 

Указание ключей доступа к S3

Далее следует выбор региона. Значение можно оставить по умолчанию, нажав Enter:

Выбор региона в rclone

В качестве Endpoint указываем URL подключения к хранилищу, к которому будем подключаться:

Регистрация URL хранилища в rclone

Остальные настройки оставляем по умолчанию — для этого просто нажимаем Enter. Продвинутую конфигурацию также оставляем по умолчанию: выбираем n и жмём Enter.
 

Пункт с продвинутыми настройками rclone

На последнем этапе вы увидите информацию о конфигурации. Убедитесь в правильности настроек, введите y и нажмите Enter:
 

Вывод после завершения настройки rclone

Настройка приёмника завершена. Таким же образом повторим настройку для хранилища приёмника, получив 2 зарегистрированных remote в конфигурации.

Настройки через конфигурационный файл

Необходимые настройки можно внести и напрямую — через указание данных в конфигурационном файле rclone.conf:

Используем для этого любой удобный вам текстовый редактор. В случае Windows заводим новый текстовый файл txt-формата, на Linux используем vim или nano:

vim /root/.config/rclone/rclone.conf

Прописываем аналогичный код с указанием типа, ключей доступа, URL-адрес хранилища и региона для S3-источника (source) и S3-приёмника (destination):

[source]
type = s3
access_key_id = КЛЮЧ_ДОСТУПА_ИСТОЧНИКА
secret_access_key = СЕКРЕТНЫЙ_КЛЮЧ_ИСТОЧНИКА
endpoint = URL_S3_ИСТОЧНИКА
region = ru-central1

[destination]
type = s3
access_key_id = КЛЮЧ_ДОСТУПА_ПРИЁМНИКА
secret_access_key = СЕКРЕТНЫЙ_КЛЮЧ_ПРИЁМНИКА
endpoint = URL_S3_ПРИЁМНИКА
region = ru-central1

Запуск процедуры копирования

Для проверки корректности подключения по указанным вами данным можно воспользоваться командой rclone ls с указанием имени remote:

rclone ls source:
rclone ls destination:

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

Запуск процесса копирования выполняется через команду следующего вида:

rclone copy -v -P --log-file=rclone.log --transfers=256 --retries=100 --retries-sleep 5m --low-level-retries=100 --timeout=10m source:имя_бакета_источника/ destination:имя_бакета_приёмника/

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

 

Опции, указанные в команде:
 

--log-file — включает запись лога вывода rclone в файл rclone.log;

--transfers — задаёт лимит числа файлов, передающихся одновременно. Если объём оперативной памяти вашего сервера значителен, вы можете указывать большее значение;

--retries — задаёт число повторных попыток подключения, если передача файла не удалась;

--retries-sleep — указывает время ожидания до следующей попытки подключения; 

--low-level-retries — задаёт число повторных попыток передачи данных на низких уровнях хранилища; 

--timeout — задаёт таймаут на выполнение операции ввода-вывода. Если передача началась, но повисла в ожидании, этот параметр задаёт время, по истечению которого передача считается невыполненной.
 

В конце команды указывается заданное вами имя remote S3-хранилища — источника и приёмника с указанием бакетов. Между ними и производится копирование данных.
 

При необходимости ограничить скорость передачи данных можно добавить опцию --bwlimit, указав максимально допустимую скорость передачи в мегабайтах:

rclone copy -v -P --log-file=rclone.log --transfers=256 --retries=100 --retries-sleep 5m --low-level-retries=100 --timeout=10m --bwlimit=100
 source:имя_бакета_источника/ destination:имя_бакета_приёмника/

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

У Rclone также есть много других опций. При необходимости вы можете настроить команду под другие задачи. Подробнее можно узнать в официальной документации.
 

Если вам нужно просто скопировать данные, рекомендуем просто использовать команду выше с теми же опциями, изменив имена remote и бакетов на зарегестрированные вами.
 

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

Обратите внимание. Rclone переносит данные и часть метаданных объектов, но установленные на исходнике политики перенесены не будут.

Запускаем копирование и ждём завершения. Когда процесс переноса закончится, получим вывод об объеме переданных файлов, скорости соединения и затраченном времени:
 

Transferred:       36.732 KiB / 36.732 KiB, 100%, 9.179 KiB/s, ETA 0s
Checks:               377 / 377, 100%
Transferred:           26 / 26, 100%
Elapsed time:         6.6s

Данные успешно перенесены. Теперь вы можете настроить ваш сервис для работы  с новым S3-хранилищем. 

Этот материал был полезен?

Скидка новым клиентам
Закажите сервер сегодня и получите скидку на первый месяц аренды!
Наш сайт использует cookies Вы можете отключить их в настройках браузера, но это может ограничить функционал. Оставаясь на сайте, вы соглашаетесь с использованием cookies.