INTEGRITY Документация

Rclone

Вы должны создать ключ доступа перед началом работы. Во всех примерах используется access_key_id и access_key_secret переменные, которые представляют Access Key ID и Secret Access Key значения, которые вы создали.


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

Настройка rclone

С rclone установлен, вы можете выполнить rclone config чтобы настроить нового поставщика хранилища S3. Вам будет задана серия вопросов о данных нового поставщика.

  1. Создайте новый remote, выбрав n.
  2. Выберите имя для нового remote. Например, используйте r2.
  3. Выберите Amazon S3 Compliant Storage Providers тип хранилища.
  4. Выберите Cloudflare R2 storage для провайдера.
  5. Выберите, хотите ли вы ввести учётные данные AWS вручную или получить их из среды выполнения.
  6. Введите AWS Access Key ID.
  7. Введите AWS Secret Access Key (пароль).
  8. Выберите регион для подключения (необязательно).
  9. Выберите конечную точку S3 API.

Изменение существующей конфигурации rclone

Если вы уже настроили rclone ранее, вы можете выполнить rclone config file чтобы вывести расположение вашего rclone файл конфигурации:

rclone config file
# Configuration file is stored at:
# ~/.config/rclone/rclone.conf

Затем используйте редактор (nano или vim, например) для добавления или редактирования нового провайдера. В этом примере предполагается, что вы добавляете новый r2 провайдер:

[r2]
type = s3
provider = Cloudflare
access_key_id = abc123
secret_access_key = xyz456
endpoint = https://<accountid>.r2.cloudflarestorage.com
acl = private

Затем вы можете использовать новую rclone провайдера для любых ваших обычных рабочих процессов.

Список бакетов & объектов

rclone tree команду можно использовать для просмотра содержимого удалённого хранилища, в данном случае Cloudflare R2.

rclone tree r2:
# /
# ├── user-uploads
# │   └── foobar.png
# └── my-bucket-name
#     ├── cat.png
#     └── todos.txt

rclone tree r2:my-bucket-name
# /
# ├── cat.png
# └── todos.txt

Загрузка и получение объектов

rclone copy команду можно использовать для загрузки объектов в бакет R2 и наоборот: это позволяет загружать файлы размером до максимального размера объекта в R2, составляющего 5 ТБ.

# Upload dog.txt to the user-uploads bucket
rclone copy dog.txt r2:user-uploads/
rclone tree r2:user-uploads
# /
# ├── foobar.png
# └── dog.txt

# Download dog.txt from the user-uploads bucket
rclone copy r2:user-uploads/dog.txt .

Примечание о размерах частей при составной загрузке

При составной загрузке размер частей может существенно повлиять на количество используемых операций класса A, что скажется на итоговой стоимости. Каждая загрузка части считается отдельной операцией, поэтому более крупные части снижают число операций, но их повторная загрузка при сбое обходится дороже. Учитывайте также, что составная загрузка всегда расходует как минимум в 3 раза больше операций, чем одна PutObject, поскольку будет включать как минимум один CreateMultipartUpload, UploadPart & CompleteMultipartUpload операции.

Оптимальный размер части во многом зависит от сценария использования, но следующие факторы помогут снизить расходы, поэтому их стоит учитывать.

Вы можете настроить размер части составной загрузки rclone с помощью --s3-chunk-size аргумент CLI. Обратите внимание, что вам также может понадобиться изменить --s3-upload-cutoff аргумент, чтобы убедиться, что rclone использует составную загрузку. Оба параметра также можно задать в файле конфигурации. Как правило, --s3-upload-cutoff будет не меньше --s3-chunk-size.

rclone copy long-video.mp4 r2:user-uploads/ --s3-upload-cutoff=100M --s3-chunk-size=100M

Создание presigned URL

Вы также можете создавать presigned-ссылки, которые позволяют временно предоставлять публичный доступ к файлу с помощью ссылка rclone команда.

# You can pass the --expire flag to determine how long the presigned link is valid. The --unlink flag isn't supported by R2.
rclone link r2:my-bucket-name/cat.png --expire 3600
# https://<accountid>.r2.cloudflarestorage.com/my-bucket-name/cat.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<credential>&X-Amz-Date=<timestamp>&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>