С объектными хранилищами чаще всего работают через API. Но если очень хочется, можно сложить туда файлы и работать с ними в объектном хранилище, как в файловой системе, с иерархией каталогов.

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

Само по себе объектное хранилище никакую иерархию не предоставляет, так что для имитации файловой системы используют специальные утилиты. Такая схема позволяет само хранение организовать со всеми преимуществами облака (доступ из любой локации, встроенное резервирование данных в облаке, резиновое масштабирование), но работать с объектами в логике, привычной человечеству ещё со времён Norton Commander.

Эта статья как раз про то, как настроить работу с объектным хранилищем на примере VK Cloud (бывш. MCS) как с файловой системой. Мы быстренько создадим хранилище и покажем, как подключить к нему три утилиты:

  • Диск-О (для Windows/Mac, с VK работает бесплатно).
  • Cyberduck (для Windows/Mac).
  • s3fs-fuse (для Unix-like систем).

Создание хранилища

  1. Создаём хранилище тут: https://mcs.mail.ru/app/services/storage/

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

  2. Нажимаем «Создать бакет»:


    null

  3. Придумываем название бакета (оно должно быть уникальным по всему хранилищу).
  4. Выбираем класс хранения: hotbox (хранение подороже, скачивание подешевле) или icebox (всё наоборот, см. тариф).

    null
  5. Жмём «Добавить бакет». Бакет создан. Теперь настроим доступ к нему.

Настройка бакета

  1. Перейдите в Объектное хранилище > Аккаунты, нажмите большую синюю кнопку «Создать аккаунт», если аккаунтов еще нет, либо «Добавить» для создания дополнительного аккаунта:

    null
  2. Введите имя аккаунта, нажмите «Создать»:

    null
  3. Появятся параметры доступа к аккаунту, скопируйте их себе.

    null
  4. На этом этапе настройка хранилища закончена. Переходим к нашим утилитам.

Настройка работы с файлами через Диск-О

Диск-О — клиент для доступа к любым облачным хранилищам, от стандартных облачных дисков для пользователей до объектных хранилищ. Он доступен для Windows и MacOS, установим его на примере Mac OS X.

  1. Откройте сайт https://disk-o.cloud/ru/, нажмите «Скачать для MacOS». Вас переключит в AppStore, установите Disk-O.

    null
  2. После установки, откройте программу. Промотайте список облачных хранилищ до VK S3 и нажмите на «Добавить»:

    null
  3. Введите параметры доступа, полученные при настройке бакета:

    null
  4. Нажмите «Подключить». После этого бакет появится в списке ваших дисков:

    null

С ним можно работать, как с обычным диском: копировать, перемещать, запускать файлы. Только он не занимает места на физическом диске компьютера.
Проверка: скопируем какой-нибудь файл на подключенный диск.

Файл также появился в web-интерфейсе хранилища (вот тут, только зайдите в нужный бакет):

Настройка работы с файлами через Cyberduck

Cyberduck — это тоже клиент облачных хранилищ для Windows/Mac.

  1. Скачайте соответствующую версию с https://cyberduck.io/ и установите.
  2. После запуска нажмите на «Новое подключение».

    null
  3. Введите параметры доступа, полученные ранее: Server (hb.bizmrg.com (для Hotbox), ib.bizmrg.com (для Icebox)), Access Key ID, Secret Access Key. Нажмите «Подключиться»:

    null

Откроются ваши бакеты:

null

Теперь с бакетами можно работать как с файловой системой — добавлять, удалять файлы и директории.

Синхронизация: я перетащил файл в бакет myfiles-ash:


null

Для синхронизации нажимаю на шестеренку (Действие) и выбираю «Синхронизировать…».

Настройка работы с файлами через s3fs-fuse

s3fs-fuse — это модуль поддержки хранилищ s3 для модульной файловой системы fuse, которая используется в unix-like системах. Посмотрим на примере сервера Ubuntu, как использовать s3fs-fuse.

  1. Установка:
    
    ubuntu@ubuntu-basic-1-2-10gb:~$ sudo apt-get install s3fs
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following NEW packages will be installed:
        s3fs
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 200 kB of archives.
    After this operation, 557 kB of additional disk space will be used.
    Get:1 http://MS1.clouds.archive.ubuntu.com/ubuntu bionic/universe amd64 s3fs amd64 1.82-1 [200 kB]
    Fetched 200 kB in 1s (240 kB/s)
    Selecting previously unselected package s3fs.
    (Reading database ... 38919 files and directories currently installed.)
    Preparing to unpack .../archives/s3fs_1.82-1_amd64.deb ...
    Unpacking s3fs (1.82-1) ...
    Setting up s3fs (1.82-1) ...
    Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
                
  2. Создаем файл с доступами:
    
    ubuntu@ubuntu-basic-1-2-10gb:~$ echo
    "hdywEPtuuJTEsh2aR8un1d:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >
    .passwd-s3fs
    
    ubuntu@ubuntu-basic-1-2-10gb:~$ chmod 600 .passwd-s3fs            
    

    Формат файла — ACCESS_KEY_ID:SECRET_ACCESS_KEY

  3. Подключение бакета:
    
    ubuntu@ubuntu-basic-1-2-10gb:~$ mkdir my-bucket
    ubuntu@ubuntu-basic-1-2-10gb:~$ s3fs myfiles-ash my-bucket -o passwd_file=${HOME}/.passwd-s3fs -o url=https://ib.bizmrg.com/ -o use_path_request_style
    ubuntu@ubuntu-basic-1-2-10gb:~$ ls my-bucket/
    'Снимок экрана 2020-05-28 в 11.01.06.png'  'Снимок экрана 2020-05-29 в 11.43.21.png'       
    

Формат команды s3fs — s3fs имя_бакета папка_куда_подключать -o passwd_file=файл_с_доступами -o url=(hb.bizmrg.com (для Hotbox), ib.bizmrg.com (для Icebox)) -o use_path_request_style

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

Успехов!

Оригинал статьи на Habr.com.