Как монтировать контейнер объектного хранилища в Windows
Рассказываем, как примонтировать контейнер объектного хранилища на хост с ОС Windows с помощью инструмента rclone.
Что такое rclone
Rclone — это инструмент командной строки с открытым кодом, предназначенный для работы с объектным хранилищем. У него активное сообщество пользователей и разработчиков, что означает поддержку и постоянное обновление. На официальном сайте rclone представлена подробная документация, в которой описаны возможности использования каждой команды и опции инструмента.
Инструмент поддерживает большое количество облачных провайдеров. Вы можете легко перемещать данные между различными хранилищами без необходимости изучать различные API и инструменты для каждого провайдера.
Утилита предлагает обширный набор функций для работы с объектным хранилищем. Взаимодействие через командную строку упрощает интеграцию скриптов для автоматизации задач резервного копирования, синхронизации и управления файлами. Также при передаче данных инструмент использует многопоточность, чтобы обеспечить высокую скорость загрузки и выгрузки объектов. Дополнительно rclone поддерживает шифрование данных при передаче и хранении.
В целом, rclone — мощный и гибкий инструмент для работы с объектным хранилищем. В нем объединяются простота использования, безопасность, высокая производительность и широкий набор функций для решения разнообразных задач.
Давайте посмотрим, как использовать rclone для монтирования контейнера объектного хранилища.
Дисклеймер
Мы написали этот текст в июне 2024, но инструменты и технологии могут меняться. На такой случай у нас есть актуальная документация с инструкцией по установке и работе rclone.
Создаем необходимые компоненты
Для работы нам понадобятся:
- контейнер в объектном хранилище,
- сервисный пользователь,
- S3-ключи для авторизации,
- хост с ОС Windows.
Теперь поочередно подготовим все необходимые элементы.
Создаем контейнер
Авторизуемся в панели управления my.selectel.ru и переходим в раздел Объектное хранилище. Затем создаем контейнер по кнопке:
Указываем параметры контейнера.
- Имя: название латинскими буквами с нижним регистром.
- Тип: Публичный.
- Класс хранения: Стандартное хранение.
- Virtual-Hosted: отмечаем галочку в чекбоксе.
И кликаем по кнопке Создать контейнер.
Создаем сервисного пользователя
Сервисный пользователь — это пользователь с учетной записью для программного доступа к продукту через API и другие инструменты автоматизации.
Чтобы его создать, переходим в раздел Управление доступом.
В подразделе Управление пользователями переходим во вкладку Сервисные пользователи и нажимаем на кнопку Добавить пользователя:
В параметрах при добавлении пользователя указываем роль Администратор объектного хранилища и проект облачной платформы, в котором находится наш контейнер. И затем нажимаем на кнопку Добавить пользователя.
Более подробную информацию о ролях сервисных пользователей вы можете узнать в документации — Типы и роли пользователей.
Выдаем S3-ключи сервисному пользователю
Кликаем по имени пользователя, в нашем случае user, и переходим в его карточку.
Для выдачи S3-ключа нажимаем кнопку Добавить ключ в разделе S3 ключи.
Указываем наименование ключа и проект, к которому он будет привязан. Для создания нажимаем кнопку Сгенерировать.
В открывшемся окне вы увидите значения:
- Access key — Access Key ID, идентификатор ключа;
- Secret key — Secret Access Key, секретный ключ.
Обязательно сохраните значения созданного ключа, потому что после закрытия окна вы не сможете больше увидеть значение Secret key. В панели управления будет отображаться только наименование ключа, проект, которому он принадлежит, и значение Access key.
Работаем с утилитой rclone
Устанавливаем инструмент
Для установки инструмента переходим на сайт разработчика и скачиваем архив, совместимый с ОС Windows. После окончания загрузки распаковываем его в рабочую папку.
Рекомендуем выбрать для инструмента расположение, отличное от папки Загрузки, потому что вся дальнейшая работа с rclone будет происходить именно в разархивированной папке.
Запускаем командную строку (cmd) от имени администратора. Проверяем используемого пользователя командой whoami:
Переходим в папку с инструментом с помощью команды cd:
cd <путь_до_папки>
Путь до папки можно скопировать в адресной строке проводника.
Настраиваем rclone
Запускаем конфигурирование инструмента следующей командой:
rclone.exe config
При первом запуске программы вам предложат создать конфигурационный файл. Вводим n для выбора New remote — создания новой конфигурации, и указываем наименование.
Выбираем тип хранилища:
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Minio, Netease, Petabox, RackCorp, rclone, Scaleway, SeaweedFS, StackPath, Storj, Synology, TencentCOS, Wasabi, Qiniu and others
Вводим цифру, соответствующую номеру пункта (в нашем примере это 4):
Storage> 4
Выбираем провайдера:
1 / Amazon Web Services (AWS) S3
\ (AWS)
Вводим цифру, соответствующую номеру пункта (в нашем примере это 1):
provider> 1
Выбираем ручной способ ввода данных аутентификации:
1 / Enter AWS credentials in the next step.
\ (false)
Вводим цифру, соответствующую номеру пункта (в нашем примере это 1):
env_auth> 1
Вводим идентификатор ключа S3 — Access Key ID, который мы получали ранее.
access_key_id> <access_key>
Вводим секретный ключ S3 — Secret Access Key, который мы получали ранее.
secret_access_key> <secret_key>
Вводим регион, в котором находится объектное хранилище.
region> ru-1
Вводим URL-адрес, по которому будет происходить обращение к хранилищу.
endpoint> s3.ru-1.storage.selcloud.ru
Остальные настройки можно оставить по умолчанию — нажимаем Enter, чтобы их пропустить.
В конце мы получаем вывод внесенных нами настроек.
Configuration complete.
Options:
- type: s3
- provider: AWS
- access_key_id: <access_key>
- secret_access_key:
- region: ru-1
- endpoint: s3.ru-1.storage.selcloud.ru
- server_side_encryption: .
Keep this "selectel" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>
Проверяем корректность и нажимаем Enter.
На данном этапе мы закончили конфигурацию подключения под наименованием selectel.
Current remotes:
Name Type
==== ====
selectel s3
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>
Для выхода из режима конфигурирования нажимаем q.
Тестируем настройки
Проверим внесенные настройки. Загрузим с помощью командной строки файл в контейнер и проверим, как он отображается.
Управление данными хранилища с помощью rclone выполняется через шаблонный формат команд:
rclone <command> <remote_name>:<container>
<remote_name> — название подключения. Мы будем использовать сконфигурированное ранее подключение selectel.
<container> — название контейнера.
<command> — исполняемая команда.
Список других часто используемых команд:
- mkdir — создание контейнера;
- ls — просмотр списка объектов;
- copy — загрузка объекта;
- deletefile — удаление объекта.
Полный список команд представлен на сайте разработчика в статье rclone commands.
Выполним команду для загрузки файла test.txt в контейнер dino-bucket с использованием пользователя selectel:
rclone copy test.txt selectel:dino-bucket
В контейнере через панель управления проверяем наличие загруженного объекта.
Успех! Теперь мы умеем работать с объектным хранилищем через rclone.
Монтируем контейнер
Для монтирования контейнера воспользуемся командой mount:
rclone mount <remote_name>:<container> <disk_name>
<disk_name> — это название, с которым будет примонтирован диск (контейнер), например: S:. Также можно использовать символ *, и система самостоятельно укажет обозначение диска.
В отличие от других операционных систем, Windows предоставляет разные типы файловой системы для сетевых и жестких дисков. ОС оптимизирует доступ, исходя из предположения, что фиксированные диски быстрые и надежные, а сетевые диски имеют относительно высокую задержку и меньшую надежность. По умолчанию rclone подключает контейнер как жесткий диск. Но если вам необходимо монтировать контейнер как сетевой диск, используйте дополнительно опцию —network-mode.
Полный список опций, которые можно использовать с командой,представлен на сайте разработчика в статье rclone mount.
Для запуска команды mount в Windows необходимо скачать и установить WinFsp. WinFsp (Windows File System Proxy) — это программное обеспечение с открытым исходным кодом, которое позволяет разработчикам реализовывать собственные файловые системы в Windows. Оно предоставляет уровень эмуляции FUSE, который rclone использует в сочетании с cgofuse.
После установки компонента переходим в командную строку и монтируем контейнер с данными, которые мы использовали ранее:
rclone mount selectel:dino-bucket S:
В результате выполнения команды появится информация о том, что служба rclone запущена.
В проводнике открываем раздел Этот компьютер (This PC) и проверяем наличие смонтированного контейнера.
Создадим файл test2 в контейнере, чтоб проверить исправность монтирования.
Переходим в панель управления и проверяем наличие созданного файла.
Все работает надежно, как швейцарские часы!
Автоматизируем монтирование
Для настройки автоматического монтирования контейнера создадим текстовый файл и пропишем в нем команду:
<путь_до_rclone.exe> <команда_монтирования_контейнера>
Подставим наши данные и получим следующее:
C:\Users\Administrator\Desktop\Job\instruments-s3\rclone\rclone.exe mount selectel:dino-bucket S:
Теперь сохраняем файл и указываем расширение .cmd для создания пакетного файла.
Переходим в папку автозагрузки — Startup по пути: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.
Данная папка содержит программы и файлы, которые автоматически запускаются при загрузке операционной системы. Для автоматического запуска команды монтирования переносим в эту папку наш файл auto_mount.
Перезагружаем хост и проверяем настроенную автоматизацию.
Готово! Мы примонтировали контейнер объектного хранилища в Windows с помощью rclone и убедились, что все работает корректно. Теперь, когда все необходимые настройки выполнены, вы сможете напрямую взаимодействовать с вашим контейнером объектного хранилища, работая с ним, как с обычной локальной файловой системой в Windows.