Rclone
Rclone — это интерфейс командной строки для работы с объектами в S3.
Настроить Rclone
1. Настроить доступ к S3
Настроить доступ может Владелец аккаунта или пользователь с ролью iam_admin.
- Создайте сервисного пользователя с ролью с доступом в S3.
Если вы используете сервисного пользователя с ролью
object_storage_userилиs3.bucket.user, в бакете должна быть настроена политика доступа. - Выдайте пользователю S3-ключ.
2. Установить клиент
Для совместимости с Selectel необходим Rclone версии v1.69 и выше.
Windows
Linux/macOS
-
На сайте Rclone скачайте дистрибутив для Windows.
-
Распакуйте архив с дистрибутивом.
-
Откройте командную строку.
-
Перейдите в директорию с дистрибутивом:
cd <path>Укажите
<path>— путь к директории с дистрибутивом.
-
Откройте терминал.
-
Установите Rclone любым способом — например, готовым скриптом:
sudo -v ; curl https://rclone.org/install.sh | sudo bashПодробнее о всех способах установки на сайте Rclone.
3. Создать конфигурацию Rclone
-
Убедитесь, что в бакете включена Virtual-Hosted адресация.
-
Откройте режим конфигурирования:
rclone configВ консоли появится диалог:
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config -
Создайте новую конфигурацию:
n/s/q> n -
Введите имя подключения к удаленному хранилищу (например,
selectel_s3):name> selectel_s3 -
Введите тип хранилища, который указан после строки
Amazon S3 Compliant Storage Providers including ..., Selectel, ...:Storage> s3 -
Введите тип провайдера, который указан после строки
Any other S3 compatible provider:provider> Selectel -
Выберите способ получения авторизационных данных, который указан после строки
Enter AWS credentials in the next step:env_auth> false -
Введите
AWS Access Key ID:access_key_id> <access_key>Укажите
<access_key>— значение поля Access key из S3-ключа. -
Введите
AWS Secret Access Key (password):secret_access_key> <secret_key>Укажите
<secret_key>— значение поля Secret key из S3-ключа. -
Введите пул, в котором находится S3 (например,
ru-1):region> <pool> -
Введите URL для доступа по протоколу S3 API:
endpoint> <s3_domain>Укажите
<s3_domain>— домен S3 API, зависит от пула, в котором находится S3. -
Параметр
location_constraintоставьте пустым. -
Параметр
aclоставьте пустым. -
Параметр
Edit advanced configоставьте пустым или введитеn. -
Проверьте конфигурацию:
Remote config
--------------------
[selectel_s3]
type = s3
provider = Selectel
env_auth = false
access_key_id = <access_key>
secret_access_key = <secret_key>
region = <pool>
endpoint = <s3_domain>
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remoteЕсли конфигурация верная, нажмите Enter. Если нет, введите
eи отредактируйте конфигурацию. -
Подтвердите создание конфигурации:
y/e/d> y -
Выйдите из диалога настроек:
e/n/d/r/c/s/q> q
Работа с Rclone
Формат команд
Общий вид команд:
<command> <remote_name>:<bucket_name>/<object_name>
Укажите:
<command>— команду Rclone видаrclone <subcommand>. Посмотреть все команды можно на сайте Rclone или в выводе командыrclone --help<remote_name>— имя подключения, указанное при настройке Rclone;<bucket_name>— имя бакета;<object_name>— опционально: имя объекта.
Создать бакет
Через S3 API можно создать только приватный бакет.
Создайте бакет:
rclone mkdir <remote_name>:<bucket_name>
Укажите:
<remote_name>— имя подключения, указанное при настройке Rclone;<bucket_name>— имя нового бакета. Учитывайте правила именования бакетов, подробнее в инструкции Bucket naming rules документации AWS.
Посмотреть список объектов
Посмотрите список объектов:
rclone ls <remote_name>:<bucket_name>/<prefix>
Укажите:
<remote_name>— имя подключения, указанное при настройке Rclone;<bucket_name>— имя бакета;<prefix>— опционально: префикс, объекты с которым нужно вывести.
Загрузить объект
При выполнении операций копирования и синхронизации Rclone проверяет все объекты по дате и времени изменения или md5-сумме. Из директории-источника в директорию назначения передаются объекты, которые были изменены.
Загрузите объект из локальной директории:
rclone copy <path> <remote_name>:<bucket_name>/<object_name>
Укажите:
<path>— путь до объекта в локальной директории;<remote_name>— имя подключения, указанное при настройке Rclone;<bucket_name>— имя бакета;<object_name>— опционально: имя, с которым будет загружен объект. Если его не указать, будет использовано имя файла.
Удалить объект
Удалите объект:
rclone deletefile <remote_name>:<bucket_name>/<object_name>
Укажите:
<remote_name>— имя подключения, указанное при настройке Rclone;<bucket_name>— имя бакета;<object_name>— имя объекта, который нужно удалить.