Rclone

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

Обратите внимание! Ниже показан пример установки для актуальной на момент написания инструкции версии 1.55.1. В зависимости от версии Rclone порядок установки может меняться.

Установка

Порядок установки на ОС семейства Linux

curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-v1.55.1-linux-amd64/
sudo cp rclone /usr/sbin/
sudo chown root:root /usr/sbin/rclone
sudo chmod 755 /usr/sbin/rclone
sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb

Порядок установки на MacOS

cd && curl -O https://downloads.rclone.org/rclone-current-osx-amd64.zip
unzip -a rclone-current-osx-amd64.zip && cd rclone-*-osx-amd64
sudo mkdir -p /usr/local/bin
sudo mv rclone /usr/local/bin/
cd .. && rm -rf rclone-*-osx-amd64 rclone-current-osx-amd64.zip

Порядок установки на Windows ОС

Скачайте дистрибутив Rclone для Windows с официального сайта Rclone. Запустите приложение и следуйте инструкуциям.

Конфигурация

Перед началом работы с Объектным хранилищем Selectel необходимо создать конфигурацию. Так как Rclone является консольным клиентом, порядок конфигурации не отличается от типа ОС, на которую он был установлен.

Пример конфигурации доступа через Swift API

Для начала настройки введите:

rclone config
  1. На консоли появится такой диалог:

    No remotes found - make a new one
    n) New remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    n/r/c/s/q>

    Выберите n для создания новой конфигурации и нажмите клавишу Enter.

  2. Укажите имя подключения к удаленному хранилищу name>. Можно указать любое имя, например, selectel:

    name> selectel
  3. Выберите Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH) и введите цифру, соответствующую номеру пункта (в зависимости от версии Rclone меняется порядок хранилищ, в данном примере это пункт 11). Нажмите Enter.

    Type of storage to configure.
    Choose a number from below, or type in your own value
    1 / Amazon Drive
    \ "amazon cloud drive"
    2 / Amazon S3 (also Dreamhost, Ceph, Minio)
    \ "s3"
    [...]
    11 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
    \ "swift"
    [...]
    Storage> 11
  4. Выберите Enter swift credentials in the next step для ввода имени пользователя и пароля.

    1 / Enter swift credentials in the next step
    \ "false"
    2 / Get swift credentials from environment vars. Leave other fields blank if using this.
    \ "true"
    env_auth> 1
  5. После этого программа запросит имя пользователя и пароль:

    User name to log in (OS_USERNAME).
    Enter a string value. Press Enter for the default ("").
    user> имя_пользователя
    API key or password (OS_PASSWORD).
    Enter a string value. Press Enter for the default ("").
    key> пароль
  6. При запросе хоста для доступа через Swift API введите его вручную:

    Authentication URL for server (OS_AUTH_URL).
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
    1 / Rackspace US
    \ "https://auth.api.rackspacecloud.com/v1.0"
    2 / Rackspace UK
    \ "https://lon.auth.api.rackspacecloud.com/v1.0"
    3 / Rackspace v2
    \ "https://identity.api.rackspacecloud.com/v2.0"
    4 / Memset Memstore UK
    \ "https://auth.storage.memset.com/v1.0"
    5 / Memset Memstore UK v2
    \ "https://auth.storage.memset.com/v2.0"
    6 / OVH
    \ "https://auth.cloud.ovh.net/v2.0"
    auth > https://api.selcdn.ru/v3
  7. Все пункты ниже можно оставить пустыми, нажав после каждого клавишу Enter.

  8. Еще раз проверьте все настройки:

    Remote config
    --------------------
    [selectel]
    env_auth = false
    user = your_username
    key = your_password
    auth = https://api.selcdn.ru/v3
    tenant = your_username
    auth_version = 3
    endpoint_type = public
    --------------------
    y) Yes this is OK
    e) Edit this remote
    d) Delete this remote
    y/e/d> 
  9. Если все указано правильно, введите y и нажмите Enter.

  10. Для выхода из диалога настроек введите q и нажмите Enter.

Пример конфигурации доступа через S3 API

Для начала настройки наберите:

rclone config
  1. На консоли появится такой диалог:

    No remotes found - make a new one
    n) New remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    n/r/c/s/q>

    Выберите n для создания новой конфигурации и нажмите клавишу Enter.

  2. Укажите имя подключения к удаленному хранилищу. Можно указать любое имя, например, selectel:

    name> selectel_s3
  3. Выберите Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc) и введите цифру, соответствующую номеру пункта (в зависимости от версии Rclone меняется порядок хранилищ, в данном примере это пункт 4). Нажмите Enter.

    Type of storage to configure.
    Choose a number from below, or type in your own value
    1 / 1Fichier
    \ "fichier"
    2 / Alias for an existing remote
    \ "alias"
    3 / Amazon Drive
    \ "amazon cloud drive"
    4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
    \ "s3"
    [...]
    Storage> 4
  4. Выберите S3 провайдера Any other S3 compatible provider и введите цифру, соответствующую номеру пункта (в данном примере это пункт 10). Нажмите Enter.

    Choose your S3 provider.
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
    1 / Amazon Web Services (AWS) S3
    \ "AWS"
    2 / Alibaba Cloud Object Storage System (OSS) formerly Aliyun
    \ "Alibaba"
    3 / Ceph Object Storage
    \ "Ceph"
    [...]
    10 / Any other S3 compatible provider
    [...]
  5. Выберите false в пункте Enter AWS credentials in the next step:

    Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars).
    Only applies if access_key_id and secret_access_key is blank.
    Enter a boolean value (true or false). Press Enter for the default ("false").
    Choose a number from below, or type in your own value
    1 / Enter AWS credentials in the next step
    \ "false"
    2 / Get AWS credentials from the environment (env vars or IAM)
    \ "true"
  6. Введите имя пользователя и пароль:

    AWS Access Key ID.
    Leave blank for anonymous access or runtime credentials.
    Enter a string value. Press Enter for the default ("").
    access_key_id> имя_пользователя
    AWS Secret Access Key (password)
    Leave blank for anonymous access or runtime credentials.
    Enter a string value. Press Enter for the default ("").
    secret_access_key> пароль

    Внимание! Для доступа по S3 API в настройках пользователя отметьте Использовать эти данные для доступа по протоколу S3.

  7. Выберите регион:

    Region to connect to.
    Leave blank if you are using an S3 clone and you don't have a region.
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
    1 / Use this if unsure. Will use v4 signatures and an empty region.
    \ ""
    2 / Use this only if v4 signatures don't work, eg pre Jewel/v10 CEPH.
    \ "other-v2-signature"
    region> ru-1
  8. Выберите url для доступа по протоколу S3 API:

    Endpoint for S3 API.
    Required when using an S3 clone.
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
    endpoint> https://s3.selcdn.ru
  9. Все пункты ниже можно оставить пустыми, нажав после каждого клавишу Enter.

  10. Еще раз проверьте все настройки:

    Remote config
    --------------------
    [selectel_s3]
    type = s3
    provider = Other
    env_auth = false
    access_key_id = имя_пользователя
    secret_access_key = пароль
    region = ru-1
    endpoint = https://s3.selcdn.ru
    --------------------
    y) Yes this is OK
    e) Edit this remote
    d) Delete this remote
    y/e/d> 
  11. Если все указано правильно, введите y и нажмите Enter.

  12. Для выхода из диалога настроек введите q и нажмите Enter.

Синтаксис команд для работы с хранилищем

Просмотр списка контейнеров в хранилище:

rclone lsd remote:

Создание нового контейнера:

rclone mkdir remote:имя_контейнера

Просмотр списка файлов в контейнере:

rclone ls remote:имя_контейнера

Копирование файлов с локальной машины в хранилище:

rclone copy /home/local/directory remote:имя_контейнера

Синхронизация файлов на локальной машине и в хранилище:

rclone sync /home/local/directory remote:имя_контейнера

Синхронизация файлов в хранилище с файлами на локальной машине:

rclone sync remote:имя_контейнера /home/local/directory

При выполнении операций копирования и синхронизации rclone проверяет все файлы по дате и времени изменения или md5-сумме. Из директории-источника в директорию назначения передаются те файлы, которые были изменены.

Подробное обо всех командах можно прочитать в официальной документации. Краткую справку можно получить с помощью команды:

rclone --help