rclone
rclone
Вы настроите синхронизацию данных в бакете Yandex Object Storage и на локальном компьютере с помощью утилиты rclone
Примечание
В этом разделе представлены шаги для подключения бакета в ОС Windows. Для подключения в других ОС смотрите официальную документацию rclone
Чтобы смонтировать бакет как диск:
- Подготовьте облако к работе.
- Подготовьте рабочее окружение.
- Создайте сервисный аккаунт.
- Создайте статический ключ доступа.
- Создайте бакет.
- Настройте подключение к Object Storage.
- Смонтируйте бакет.
- Настройте службу запуска монтирования.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки бакета входит:
- плата за хранение данных в бакете (см. тарифы Object Storage);
- плата за операции с данными (см. тарифы Object Storage).
Подготовьте рабочее окружение
-
Скачайте и установите дистрибутив winfsp
с сайта производителя. -
Скачайте с сайта производителя архив с утилитами sysinternals suite
и распакуйте его в свою рабочую папку на локальном компьютере. -
Скачайте исполняемый файл Windows Service Wrapper (WinSW)
в соответствии с конфигурацией вашей ОС и поместите его в отдельную папку. -
Скачайте с сайта производителя архив с утилитой rclone
и распакуйте его в свою рабочую папку на локальном компьютере. -
Добавьте папки с утилитами и дистрибутивом в переменную
PATH
. Для этого:- Нажмите кнопку Пуск и в строке поиска Windows введите Изменение системных переменных среды.
- Справа снизу нажмите кнопку Переменные среды....
- В открывшемся окне найдите параметр
PATH
и нажмите Изменить. - Добавьте пути до папок с утилитами в список.
- Нажмите кнопку ОК.
Создайте сервисный аккаунт
- В консоли управления
выберите каталог, в котором хотите создать сервисный аккаунт. - В списке сервисов выберите Identity and Access Management.
- Нажмите кнопку Создать сервисный аккаунт.
- В поле Имя укажите
sa-win-disk-connect
. - Нажмите кнопку
Добавить роль и выберите рольstorage.editor
. - Нажмите кнопку Создать сервисный аккаунт.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Создайте сервисный аккаунт с именем sa-win-disk-connect
:
yc iam service-account create --name sa-win-disk-connect
Требования к формату имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Подробнее о команде yc iam service-account create
см. в справочнике CLI.
Чтобы создать сервисный аккаунт, воспользуйтесь методом create для ресурса ServiceAccount.
Создайте статический ключ доступа
- В консоли управления
перейдите в каталог, которому принадлежит сервисный аккаунт. - В списке сервисов выберите Identity and Access Management.
- На панели слева выберите
Сервисные аккаунты. - В открывшемся списке выберите сервисный аккаунт
sa-win-disk-connect
. - На верхней панели нажмите кнопку
Создать новый ключ. - Выберите Создать статический ключ доступа.
- Задайте описание ключа и нажмите кнопку Создать.
- Сохраните идентификатор и секретный ключ. После закрытия диалога значение ключа будет недоступно.
-
Создайте ключ доступа для сервисного аккаунта
sa-win-disk-connect
:yc iam access-key create --service-account-name sa-win-disk-connect
Результат:
access_key: id: aje6t3vsbj8l******** service_account_id: ajepg0mjt06s******** created_at: "2022-07-18T14:37:51Z" key_id: 0n8X6WY6S24N7Oj***** secret: JyTRFdqw8t1kh2-OJNz4JX5ZTz9Dj1rI9hx*****
Подробнее о команде
yc iam access-key create
см. в справочнике CLI. -
Сохраните идентификатор
key_id
и секретный ключsecret
. Получить значение ключа снова будет невозможно.
Создайте бакет
- В консоли управления
выберите каталог, в котором хотите создать бакет. - В списке сервисов выберите Object Storage.
- Справа сверху нажмите кнопку Создать бакет.
- В поле Имя укажите имя бакета в соответствии с правилами именования.
- В полях Доступ на чтение объектов, Доступ к списку объектов и Доступ на чтение настроек выберите Ограниченный.
- Нажмите кнопку Создать бакет.
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
-
Создайте бакет, указав имя бакета в соответствии с правилами именования:
aws --endpoint-url https://storage.yandexcloud.net \ s3 mb s3://<имя_бакета>
Результат:
make_bucket: <имя_бакета>
Примечание
Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin
, на каталог, в котором будут создаваться ресурсы.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры для создания сервисного аккаунта и ключа доступа:
... // Создание сервисного аккаунта resource "yandex_iam_service_account" "sa" { name = "<имя_сервисного_аккаунта>" } // Назначение роли сервисному аккаунту resource "yandex_resourcemanager_folder_iam_member" "sa-admin" { folder_id = "<идентификатор_каталога>" role = "storage.admin" member = "serviceAccount:${yandex_iam_service_account.sa.id}" } // Создание статического ключа доступа resource "yandex_iam_service_account_static_access_key" "sa-static-key" { service_account_id = yandex_iam_service_account.sa.id description = "static access key for object storage" }
-
Добавьте в конфигурационный файл блок с параметрами бакета, указав имя бакета в соответствии с правилами именования:
resource "yandex_storage_bucket" "<имя_бакета>" { access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key bucket = "<имя_бакета>" }
Подробнее о ресурсе
yandex_storage_bucket
см. в документации провайдера Terraform. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.
-
Используйте метод REST API create для ресурса Bucket, вызов gRPC API BucketService/Create или метод S3 API create.
Настройте подключение к Object Storage
-
В рабочей папке запустите командную строку от имени администратора и выполните команду:
.\psexec -i -s cmd.exe
-
В открывшейся консоли выполните команду
whoami
и убедитесь, что сессия запущена от имени системного пользователя. -
Перейдите в папку с утилитой
rclone
и запустите ее конфигурацию:rclone.exe config
-
Следуя запросам приложения, создайте новый профиль подключения:
- Выберите создание нового профиля: введите в терминал значение
n
. - Введите имя подключения:
s3-connect
. - Выберите тип хранилища: введите в терминал значение
4
. - Выберите провайдера: введите в терминал значение
1
. - Выберите ручной способ ввода учетных данных: введите в терминал значение
1
. - Введите в терминале идентификатор секретного ключа.
- Введите в терминале значение секретного ключа.
- Укажите регион: введите в терминал значение
ru-central1
. - Укажите эндпоинт: введите в терминал значение
storage.yandexcloud.net
. - Остальные настройки можно оставить по умолчанию — нажмите Enter, чтобы их пропустить.
- Выберите создание нового профиля: введите в терминал значение
Примечание
При необходимости вы можете выполнить расширенную настройку подключения. Для этого на шаге Edit advanced config?
введите в терминале y
. Подробнее с расширенными настройками можно ознакомиться на странице документацииrclone
.
Смонтируйте бакет
-
Проверьте подключение к бакету. В той же командной строке, где выполнялась настройка подключения, выполните команду, указав имя бакета:
rclone.exe ls s3-connect:<имя_бакета>
Если конфигурация настроена правильно, в консоль будет выведен список объектов бакета.
-
Смонтируйте бакет в файловую систему, указав имя бакета и свободную букву диска в файловой системе:
rclone.exe mount s3-connect:<имя_бакета> <буква_диска>: --vfs-cache-mode full
В проводнике Windows появится новый диск с объектами из бакета.
-
Чтобы отмонтировать бакет, нажмите клавиши Ctrl + C.
Настройте службу запуска монтирования
Чтобы бакет монтировался сразу при запуске компьютера, необходимо настроить запуск монтирования от имени системной службы.
-
В папке с утилитой
WinSW
создайте файлWinSW-x64.xml
(WinSW-x86.xml
, если у вас 32-битная версия Windows) со следующим содержимым:<service> <id>rclone</id> <name>rclone-s3-disk</name> <description>This service maps an S3 bucket as a system drive.</description> <executable>"<расположение_рабочей_папки>\rclone.exe"</executable> <arguments>mount s3-connect:<имя_бакета> <буква_диска>: --vfs-cache-mode full</arguments> <log mode="roll" /> <onfailure action="restart" /> </service>
-
В этой же папке запустите командную строку от имени администратора и выполните команду:
-
Если у вас 64-битная версия Windows:
.\WinSW-x64.exe install .\WinSW-x64.xml
-
Если у вас 32-битная версия Windows:
.\WinSW-x86.exe install .\WinSW-x86.xml
-
-
Откройте панель управления службами Windows и убедитесь в наличии службы
rclone-s3-disk
:- Нажмите сочетание клавиш Win + R.
- В открывшемся окне введите
services.msc
и нажмите ОК. - В списке служб найдите
rclone-s3-disk
.
-
Перезагрузите компьютер и проверьте доступность диска.
Примечание
Также вы можете настроить запуск службы от имени служебного пользователя (подробнее в разделе Service accountWinSW
).
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
- удалите объекты из бакета;
- удалите бакет.