Подключиться по S3 и Swift

Подключиться через Rclone

Установить клиент

Настроить клиент

Настроить доступ через Swift API

  1. Откройте режим конфигурирования:

    rclone config
  2. В консоли откроется диалог:

    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.

  3. Укажите имя подключения, например, selectel:

    name> selectel
  4. Выберите 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
  5. Выберите 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
  6. Программа запросит имя пользователя и пароль:

    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> пароль
  7. При запросе хоста для доступа через 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
  8. Все пункты ниже можно оставить пустыми, нажав после каждого Enter.

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

    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> 
  10. Если все указано правильно, введите y и нажмите Enter.

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

Настроить доступ через S3 API

  1. В панели управления перейдите в раздел Облачное хранилище ⟶ Пользователи.
  2. В меню (⋮) пользователя выберите Изменить пароль и отметьте чекбокс Использовать эти данные для доступа по протоколу S3.
  3. Откройте режим конфигурирования:

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

    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.

  5. Укажите имя подключения к удаленному хранилищу, например, selectel_s3:

    name> selectel_s3
  6. Выберите 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
  7. Выберите 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
    [...]
  8. Выберите 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"
  9. Введите имя пользователя и пароль:

    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> пароль
  10. Выберите регион:

    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
  11. Выберите 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.storage.selcloud.ru
  12. Все пункты ниже можно оставить пустыми, нажав после каждого Enter.

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

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

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

Подключиться через AWS CLI

Установить клиент

AWS CLI (AWS Command Line Interface) — это интерфейс командной строки для работы с сервисами AWS. Общий порядок вызова команд смотрите в официальной документации Amazon. Для установки AWS CLI воспользуйтесь инструкцией.

Для работы с Объектным хранилищем с помощью AWS CLI используйте наборы команд:

  • s3api — команды, соответствующие операциям в REST API;
  • s3 — дополнительные команды, упрощающие работу с большим количеством объектов.

Настроить клиент

Для настройки AWS CLI используйте команду aws configure. Команда запросит значения для следующих параметров:

  • AWS Access Key ID — введите логин в формате НомерАккаунта_ИмяПользователя;
  • AWS Secret Access Key — введите пароль пользователя Объектного хранилища;
  • Default region name — введите значение ru-1

Команда aws configure в результате работы сохранит настройки в конфигурационных файлах:

  • учетные данные в .aws/credentials:

    [default]
    aws_access_key_id = НомерАккаунта_ИмяПользователя
    aws_secret_access_key = Пароль
  • регион по умолчанию в .aws/config:

    [default]
    region = ru-1

При запуске команды aws обязателен параметр --endpoint-url=https://s3.storage.selcloud.ru, поскольку по умолчанию клиент настроен на работу с AWS.

Подключиться через S3cmd

S3cmd — это интерфейс командной строки для работы с сервисами, поддерживающими HTTP API Amazon S3. Общий порядок вызова команд — в официальной документации S3cmd.

Установить клиент

Смотрите инструкцию в репозитории проекта.

Настроить клиент

Для настройки S3cmd используйте команду s3cmd --configure. Команда запросит значения для следующих параметров:

  • Access Key — НомерАккаунта_ИмяПользователя;
  • Secret Key — Пароль;
  • Default Region — ru-1;
  • S3 Endpoint — s3.storage.selcloud.ru;
  • DNS-style bucket+hostname:port template for accessing a bucket — s3.storage.selcloud.ru;
  • значения остальных параметров оставьте без изменений.

Программа попытается установить соединение с Объектным хранилищем и получить список бакетов. В случае успеха на экран будет выведено Success.

Команда s3cmd --configure сохранит настройки в файле ~/.s3cfg в формате:

[default]
   access_key = НомерАккаунта_ИмяПользователя
   secret_key = Пароль
   bucket_location = ru-1
   host_base = s3.storage.selcloud.ru
   host_bucket = s3.storage.selcloud.ru

При необходимости, эти настройки можно изменить напрямую в файле.

Подключиться через Cyberduck

Установить и настроить графический клиент

Установить и настроить консольный клиент

Подключиться через Duplicity

Установить клиент

Duplicity поддерживает протоколы SSH/SCP, FTP, HSI, WebDAV, Tahoe-LAFS и Amazon S3 для соединения с файловым сервером, архивирует данные и загружает их на локальный или удаленный файловый сервер и шифрует данные при помощи утилиты GnuPG.

Пример для Ubuntu.

  1. Установите Duplicity:

    sudo apt-get install duplicity 
  2. Установите пакеты python-swiftclient и librsync:

    sudo apt-get install python-swiftclient
    sudo apt-get install librsync-dev
  3. Установите систему контроля версий Bazaar и загрузите swiftbackend

    sudo apt-get install bzr
    bzr branch lp:~mhu-s/duplicity/swiftbackend
  4. Установите swiftbackend:

    cd swiftbackend && sudo python dist/setup.py install

Настроить клиент

  1. В текстовом редакторе напишите скрипт для резервного копирования:

    # Авторизационные данные для подключения к хранилищу
    SWIFT_PASSWORD="пароль для входа в хранилище"
    SWIFT_AUTHVERSION=2
    SWIFT_TENANTNAME="имя пользователя"
    SWIFT_AUTHURL=https://api.selcdn.ru/v2.0
    SWIFT_USERNAME="имя пользователя"
    
    # Выполнение архивирования 
    duplicity /path/to/local_folder swift://container_name
    
    # Очистка авторизационных данных для безопасности
    unset SWIFT_PASSWORD
    unset SWIFT_AUTHVERSION
    unset SWIFT_TENANTNAME
    unset SWIFT_AUTHURL
    unset SWIFT_USERNAME
  2. Сохраните этот файл под именем, например, backup.sh и сделайте его исполняемым:

    chmod +x backup.sh
  3. Выполните следующую команду:

    ./backup.sh

    GnuPG запросит кодовое слово для доступа к файлам. Далее начнется резервное копирование. Статистка будет отображена в консоли:

    --------------[ Статистика резервного копирования ]--------------
    StartTime 1391068911.00 (Thu Jan 30 12:01:51 2014)
    EndTime 1391068911.02 (Thu Jan 30 12:01:51 2014)
    ElapsedTime 0.02 (0.02 seconds)
    SourceFiles 5
    SourceFileSize 190210 (186 KB)
    NewFiles 5
    NewFileSize 190210 (186 KB)
    DeletedFiles 0
    ChangedFiles 0
    ChangedFileSize 0 (0 bytes)
    ChangedDeltaSize 0 (0 bytes)
    DeltaEntries 5
    RawDeltaSize 186114 (182 KB)
    TotalDestinationSizeChange 185217 (181 KB)
    Errors 0
    -----------------------------------------------------------------

    В указанный контейнер Объектного хранилища будут добавлены новые файлы:

    duplicity-full-signatures.20140130T073550Z.sigtar.gpg
    duplicity-full.20140130T073550Z.manifest.gpg
    duplicity-full.20140130T073550Z.vol1.difftar.gpg
  4. Для загрузки зашифрованной резервной копии из хранилища на локальную машину скопируйте скрипт из шага 1 и замените команду duplicity /path/to/local_folder swift://container_name на:

    duplicity swift://<container_name> <path_to_local_folder>

Укажите:

  • <container_name> — имя контейнера Объектного хранилища;
  • <path_to_local_folder> — путь к папке на локальной машине в формате /path/to_local/folder/

Сохраните этот скрипт под именем restore.sh и сделайте этот файл исполняемым.

При выполнении команды ./restore.sh GnuPG запросит кодовое слово. После ввода кодового слова все файлы из резервной копии будут загружены в указанную директорию на локальной машине.