Microsoft Azure Blob Storage
Microsoft Azure Blob Storage
路径指定为 remote:container
(对于 lsd
命令,可使用 remote:
)。你也可以指定子目录,例如 remote:container/path/to/dir
。
配置
以下是一个配置 Microsoft Azure Blob 存储的示例,远程存储名为 remote
。首先运行:
rclone config
这将引导你完成一个交互式的设置过程:
No remotes found, make a new one? n) New remote s) Set configuration password q) Quit config n/s/q> n name> remote Type of storage to configure. Choose a number from below, or type in your own value [snip] XX / Microsoft Azure Blob Storage \ “azureblob” [snip] Storage> azureblob Storage Account Name account> account_name Storage Account Key key> base64encodedkey== Endpoint for the service - leave blank normally. endpoint> Remote config Configuration complete. Options:
- type: azureblob
- account: account_name
- key: base64encodedkey==
- endpoint: Keep this “remote” remote? y) Yes this is OK e) Edit this remote d) Delete this remote y/e/d> y
查看所有容器
rclone lsd remote:
创建一个新容器
rclone mkdir remote:container
列出容器的内容
rclone ls remote:container
将 `/home/local/directory` 同步到远程容器,并删除容器中多余的文件。
rclone sync --interactive /home/local/directory remote:container
### --fast-list
此远程存储支持 `--fast-list`,它允许你以使用更多内存为代价来减少事务次数。有关更多详细信息,请参阅 [rclone 文档](/docs/#fast-list)。
### 修改时间和哈希值
修改时间以元数据的形式存储在对象上,键为 `mtime`。它使用具有纳秒精度的 RFC3339 格式时间进行存储。在目录列表中会提供该元数据,因此使用它不会带来性能开销。
如果你希望使用存储在对象上的 Azure 标准 `LastModified` 时间作为修改时间,请使用 `--use-server-modtime` 标志。请注意,rclone 无法设置 `LastModified`,因此如果使用 `--use-server-modtime`,建议在同步时使用 `--update` 标志。
MD5 哈希值与 blob 一起存储。但是,以分块方式上传的 blob 仅在源远程存储支持 MD5 哈希时才有 MD5 值,例如本地磁盘。
### 性能
上传大文件时,增加 `--azureblob-upload-concurrency` 的值将提高性能,但会消耗更多内存。默认值 16 设置得比较保守,以减少内存使用。对于单文件传输,可能需要将其提高到 64 或更高,才能充分利用 1 GBit/s 的链接。
### 受限文件名字符
除了 [默认受限字符集](/overview/#restricted-characters) 之外,以下字符也会被替换:
| 字符 | 编码值 | 替换字符 |
| --------- |:-----:|:-----------:|
| / | 0x2F | / |
| \ | 0x5C | \ |
文件名也不能以以下字符结尾。只有当这些字符是文件名的最后一个字符时才会被替换:
| 字符 | 编码值 | 替换字符 |
| --------- |:-----:|:-----------:|
| . | 0x2E | . |
无效的 UTF-8 字节也会被 [替换](/overview/#invalid-utf8),因为它们不能用于 JSON 字符串。
### 身份验证 {#authentication}
有多种方式可以为 Azure Blob 存储提供凭据。rclone 会按以下部分的顺序尝试这些方式。
#### 环境变量认证
如果 `env_auth` 配置参数为 `true`,则 rclone 将从环境变量或运行时获取凭据。
它按以下顺序尝试这些认证方法:
1. 环境变量
2. 托管服务标识凭据
3. Azure CLI 凭据(与 `az` 工具使用的相同)
以下各节将详细介绍这些方法。
##### 环境变量认证:1. 环境变量
如果设置了 `env_auth` 且存在环境变量,rclone 将根据设置的环境变量,使用密钥或证书对服务主体进行认证,或使用密码对用户进行认证。它按以下顺序从这些变量中读取配置:
1. 使用客户端密钥的服务主体
- `AZURE_TENANT_ID`:服务主体的租户 ID,也称为“目录” ID。
- `AZURE_CLIENT_ID`:服务主体的客户端 ID。
- `AZURE_CLIENT_SECRET`:服务主体的一个客户端密钥。
2. 使用证书的服务主体
- `AZURE_TENANT_ID`:服务主体的租户 ID,也称为“目录” ID。
- `AZURE_CLIENT_ID`:服务主体的客户端 ID。
- `AZURE_CLIENT_CERTIFICATE_PATH`:包含私钥的 PEM 或 PKCS12 证书文件的路径。
- `AZURE_CLIENT_CERTIFICATE_PASSWORD`:(可选)证书文件的密码。
- `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`:(可选)指定认证请求是否将包含 x5c 标头以支持基于主题名称/颁发者的认证。当设置为 "true" 或 "1" 时,认证请求将包含 x5c 标头。
3. 使用用户名和密码的用户
- `AZURE_TENANT_ID`:(可选)要进行认证的租户,默认为 "organizations"。
- `AZURE_CLIENT_ID`:用户要认证的应用程序的客户端 ID。
- `AZURE_USERNAME`:用户名(通常是电子邮件地址)。
- `AZURE_PASSWORD`:用户的密码。
4. 工作负载身份
- `AZURE_TENANT_ID`:要进行认证的租户。
- `AZURE_CLIENT_ID`:用户要认证的应用程序的客户端 ID。
- `AZURE_FEDERATED_TOKEN_FILE`:投影服务账户令牌文件的路径。
- `AZURE_AUTHORITY_HOST`:Azure Active Directory 端点的权限(默认:login.microsoftonline.com)。
##### 环境变量认证:2. 托管服务标识凭据
使用托管服务标识时,如果运行此程序的虚拟机(SS)具有系统分配的标识,则默认使用该标识。如果资源没有系统分配的标识,但只有一个用户分配的标识,则默认使用该用户分配的标识。
如果资源有多个用户分配的标识,则需要取消设置 `env_auth` 并设置 `use_msi`。请参阅 [`use_msi` 部分](#use_msi)。
如果在断开连接的云或私有云(如 Azure Stack)中操作,你可能希望将 `disable_instance_discovery` 设置为 `true`。这决定了 rclone 在认证之前是否从 `https://login.microsoft.com/` 请求 Microsoft Entra 实例元数据。将此设置为 `true` 将跳过此请求,这意味着你需要确保配置的权限是有效且可信任的。
##### 环境变量认证:3. Azure CLI 凭据(与 `az` 工具使用的相同)
使用 `az` 工具创建的凭据可以通过 `env_auth` 获取。
例如,如果你使用以下命令以服务主体身份登录:
az login --service-principal -u XXX -p XXX --tenant XXX
然后你可以使用以下方式访问 rclone 资源:
rclone lsf :azureblob,env_auth,account=ACCOUNT:CONTAINER
或者
rclone lsf --azureblob-env-auth --azureblob-account=ACCOUNT :azureblob:CONTAINER
这类似于使用 `az` 工具:
az storage blob list --container-name CONTAINER --account-name ACCOUNT --auth-mode login
#### 账户和共享密钥
这是最直接但灵活性最低的方法。只需填写 `account` 和 `key` 字段,其余字段留空即可。
#### SAS URL
这可以是账户级别的 SAS URL 或容器级别的 SAS URL。
要使用它,请将 `account` 和 `key` 留空,并填写 `sas_url`。
可以从 Azure 门户或 Azure 存储资源管理器获取账户级别的 SAS URL 或容器级别的 SAS URL。要获取容器级别的 SAS URL,请在 Azure 门户的 Azure Blob 资源管理器中右键单击容器。
如果你使用容器级别的 SAS URL,rclone 操作仅允许在特定容器上进行,例如:
rclone ls azureblob:container
你也可以从根目录列出单个容器。这将仅显示 SAS URL 指定的容器。
$ rclone lsd azureblob:
container/
请注意,你无法查看或访问任何其他容器,以下操作将失败:
rclone ls azureblob:othercontainer
容器级别的 SAS URL 对于临时允许第三方访问单个容器或将凭据放入不可信环境(如 CI 构建服务器)很有用。
#### 使用客户端密钥的服务主体
如果设置了以下变量,rclone 将使用客户端密钥对服务主体进行认证。
- `tenant`:服务主体的租户 ID,也称为“目录” ID。
- `client_id`:服务主体的客户端 ID。
- `client_secret`:服务主体的一个客户端密钥。
凭据也可以使用 `service_principal_file` 配置选项放在文件中。
#### 使用证书的服务主体
如果设置了以下变量,rclone 将使用证书对服务主体进行认证。
- `tenant`:服务主体的租户 ID,也称为“目录” ID。
- `client_id`:服务主体的客户端 ID。
- `client_certificate_path`:包含私钥的 PEM 或 PKCS12 证书文件的路径。
- `client_certificate_password`:(可选)证书文件的密码。
- `client_send_certificate_chain`:(可选)指定认证请求是否将包含 x5c 标头以支持基于主题名称/颁发者的认证。当设置为 "true" 或 "1" 时,认证请求将包含 x5c 标头。
**注意**:`client_certificate_password` 必须进行加密处理 - 请参阅 [rclone obscure](/commands/rclone_obscure/)。
#### 使用用户名和密码的用户
如果设置了以下变量,rclone 将使用用户名和密码进行认证。
- `tenant`:(可选)要进行认证的租户,默认为 "organizations"。
- `client_id`:用户要认证的应用程序的客户端 ID。
- `username`:用户名(通常是电子邮件地址)。
- `password`:用户的密码。
微软不建议使用这种认证方式,因为它比其他认证流程的安全性低。这种方法是非交互式的,因此与任何形式的多因素认证都不兼容,并且应用程序必须已经获得用户或管理员的同意。此凭据只能对工作和学校账户进行认证,不能对 Microsoft 账户进行认证。
**注意**:`password` 必须进行加密处理 - 请参阅 [rclone obscure](/commands/rclone_obscure/)。
#### 托管服务标识凭据 {#use_msi}
如果设置了 `use_msi`,则使用托管服务标识凭据。此认证仅在 Azure 服务中运行时有效。要使用此功能,需要取消设置 `env_auth`。
但是,如果你有多个用户标识可供选择,则必须使用 `msi_object_id`、`msi_client_id` 或 `msi_mi_res_id` 中的一个参数明确指定。
如果未设置 `msi_object_id`、`msi_client_id` 或 `msi_mi_res_id`,则等同于使用 `env_auth`。
#### Azure CLI 工具 `az` {#use_az}
设置为使用 [Azure CLI 工具 `az`](https://learn.microsoft.com/en-us/cli/azure/) 作为唯一的认证方式。
如果你希望在具有系统托管标识但不想使用该标识的主机上使用 `az` CLI,设置此选项会很有用。
不要同时设置 `env_auth`。
#### 匿名访问 {#anonymous}
如果你想访问具有公共匿名访问权限的资源,只需设置 `account`。你可以在不创建 rclone 配置的情况下执行此操作:
rclone lsf :azureblob,account=ACCOUNT:CONTAINER
### 标准选项
以下是 Azure Blob(Microsoft Azure Blob 存储)特定的标准选项。
#### --azureblob-account
Azure 存储账户名称。
将此设置为正在使用的 Azure 存储账户名称。
若要使用 SAS URL 或模拟器,请留空;否则需要设置此选项。
如果此选项为空且设置了 `env_auth`,则会尽可能从环境变量 `AZURE_STORAGE_ACCOUNT_NAME` 中读取该值。
属性:
- 配置项:account
- 环境变量:RCLONE_AZUREBLOB_ACCOUNT
- 类型:字符串
- 是否必需:否
#### --azureblob-env-auth
从运行时(环境变量、CLI 或 MSI)读取凭据。
有关详细信息,请参阅 [认证文档](/azureblob#authentication)。
属性:
- 配置项:env_auth
- 环境变量:RCLONE_AZUREBLOB_ENV_AUTH
- 类型:布尔值
- 默认值:false
#### --azureblob-key
存储账户共享密钥。
若要使用 SAS URL 或模拟器,请留空。
属性:
- 配置项:key
- 环境变量:RCLONE_AZUREBLOB_KEY
- 类型:字符串
- 是否必需:否
#### --azureblob-sas-url
仅用于容器级访问的 SAS URL。
如果使用账户/密钥或模拟器,请留空。
属性:
- 配置项:sas_url
- 环境变量:RCLONE_AZUREBLOB_SAS_URL
- 类型:字符串
- 是否必需:否
#### --azureblob-tenant
服务主体的租户 ID,也称为目录 ID。
在以下情况下设置此选项:
- 使用客户端密钥的服务主体
- 使用证书的服务主体
- 使用用户名和密码的用户
属性:
- 配置项:tenant
- 环境变量:RCLONE_AZUREBLOB_TENANT
- 类型:字符串
- 是否必需:否
#### --azureblob-client-id
正在使用的客户端的 ID。
在以下情况下设置此选项:
- 使用客户端密钥的服务主体
- 使用证书的服务主体
- 使用用户名和密码的用户
属性:
- 配置项:client_id
- 环境变量:RCLONE_AZUREBLOB_CLIENT_ID
- 类型:字符串
- 是否必需:否
#### --azureblob-client-secret
服务主体的一个客户端密钥。
在以下情况下设置此选项:
- 使用客户端密钥的服务主体
属性:
- 配置项:client_secret
- 环境变量:RCLONE_AZUREBLOB_CLIENT_SECRET
- 类型:字符串
- 是否必需:否
#### --azureblob-client-certificate-path
包含私钥的 PEM 或 PKCS12 证书文件的路径。
在以下情况下设置此选项:
- 使用证书的服务主体
属性:
- 配置项:client_certificate_path
- 环境变量:RCLONE_AZUREBLOB_CLIENT_CERTIFICATE_PATH
- 类型:字符串
- 是否必需:否
#### --azureblob-client-certificate-password
证书文件的密码(可选)。
在以下情况下可选择设置此选项:
- 使用证书的服务主体
并且证书有密码。
**注意**:输入此选项的值必须进行加密处理 - 请参阅 [rclone obscure](/commands/rclone_obscure/)。
属性:
- 配置项:client_certificate_password
- 环境变量:RCLONE_AZUREBLOB_CLIENT_CERTIFICATE_PASSWORD
- 类型:字符串
- 是否必需:否
### 高级选项
以下是 Azure Blob(Microsoft Azure Blob 存储)特定的高级选项。
#### --azureblob-client-send-certificate-chain
在使用证书认证时发送证书链。
指定认证请求是否将包含 x5c 标头以支持基于主题名称/颁发者的认证。当设置为 true 时,认证请求将包含 x5c 标头。
在以下情况下可选择设置此选项:
- 使用证书的服务主体
属性:
- 配置项:client_send_certificate_chain
- 环境变量:RCLONE_AZUREBLOB_CLIENT_SEND_CERTIFICATE_CHAIN
- 类型:布尔值
- 默认值:false
#### --azureblob-username
用户名(通常是电子邮件地址)
在以下情况下设置此选项:
- 使用用户名和密码的用户
属性:
- 配置项:username
- 环境变量:RCLONE_AZUREBLOB_USERNAME
- 类型:字符串
- 是否必需:否
#### --azureblob-password
用户的密码
在以下情况下设置此选项:
- 使用用户名和密码的用户
**注意**:输入此选项的值必须进行加密处理 - 请参阅 [rclone obscure](/commands/rclone_obscure/)。
属性:
- 配置项:password
- 环境变量:RCLONE_AZUREBLOB_PASSWORD
- 类型:字符串
- 是否必需:否
#### --azureblob-service-principal-file
包含服务主体凭据的文件路径。
通常留空。仅当你想使用服务主体而不是交互式登录时才需要设置。
$ az ad sp create-for-rbac --name "<name>" \
--role "Storage Blob Data Owner" \
--scopes "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container>" \
> azure-principal.json
有关更多详细信息,请参阅 ["创建 Azure 服务主体"](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) 和 ["分配 Azure 角色以访问 blob 数据"](https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad-rbac-cli) 页面。
将凭据直接放在 rclone 配置文件中的 `client_id`、`tenant` 和 `client_secret` 键下,而不是设置 `service_principal_file`,可能会更方便。
属性:
- 配置项:service_principal_file
- 环境变量:RCLONE_AZUREBLOB_SERVICE_PRINCIPAL_FILE
- 类型:字符串
- 是否必需:否
#### --azureblob-disable-instance-discovery
跳过请求 Microsoft Entra 实例元数据
只有在断开连接的云或私有云(如 Azure Stack)中进行认证的应用程序才应将此设置为 true。
它决定了 rclone 在认证之前是否从 `https://login.microsoft.com/` 请求 Microsoft Entra 实例元数据。
将此设置为 true 将跳过此请求,这意味着你需要确保配置的权限是有效且可信任的。
属性:
- 配置项:disable_instance_discovery
- 环境变量:RCLONE_AZUREBLOB_DISABLE_INSTANCE_DISCOVERY
- 类型:布尔值
- 默认值:false
#### --azureblob-use-msi
使用托管服务标识进行认证(仅在 Azure 中有效)。
当设置为 true 时,使用 [托管服务标识](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/) 而不是 SAS 令牌或账户密钥来对 Azure 存储进行认证。
如果运行此程序的虚拟机(SS)具有系统分配的标识,则默认使用该标识。如果资源没有系统分配的标识,但只有一个用户分配的标识,则默认使用该用户分配的标识。如果资源有多个用户分配的标识,则必须使用 `msi_object_id`、`msi_client_id` 或 `msi_mi_res_id` 中的一个参数明确指定要使用的标识。
属性:
- 配置项:use_msi
- 环境变量:RCLONE_AZUREBLOB_USE_MSI
- 类型:布尔值
- 默认值:false
#### --azureblob-msi-object-id
要使用的用户分配的 MSI 的对象 ID(如果有)。
如果指定了 `msi_client_id` 或 `msi_mi_res_id`,则留空。
属性:
- 配置项:msi_object_id
- 环境变量:RCLONE_AZUREBLOB_MSI_OBJECT_ID
- 类型:字符串
- 是否必需:否
#### --azureblob-msi-client-id
要使用的用户分配的 MSI 的对象 ID(如果有)。
如果指定了 `msi_object_id` 或 `msi_mi_res_id`,则留空。
属性:
- 配置项:msi_client_id
- 环境变量:RCLONE_AZUREBLOB_MSI_CLIENT_ID
- 类型:字符串
- 是否必需:否
#### --azureblob-msi-mi-res-id
要使用的用户分配的 MSI 的 Azure 资源 ID(如果有)。
如果指定了 `msi_client_id` 或 `msi_object_id`,则留空。
属性:
- 配置项:msi_mi_res_id
- 环境变量:RCLONE_AZUREBLOB_MSI_MI_RES_ID
- 类型:字符串
- 是否必需:否
#### --azureblob-use-emulator
如果设置为 'true',则使用本地存储模拟器。
如果使用真实的 Azure 存储端点,请留空。
属性:
- 配置项:use_emulator
- 环境变量:RCLONE_AZUREBLOB_USE_EMULATOR
- 类型:布尔值
- 默认值:false
#### --azureblob-use-az
使用 Azure CLI 工具 `az` 进行认证
设置为使用 [Azure CLI 工具 `az`](https://learn.microsoft.com/en-us/cli/azure/) 作为唯一的认证方式。
如果你希望在具有系统托管标识但不想使用该标识的主机上使用 `az` CLI,设置此选项会很有用。
不要同时设置 `env_auth`。
属性:
- 配置项:use_az
- 环境变量:RCLONE_AZUREBLOB_USE_AZ
- 类型:布尔值
- 默认值:false
#### --azureblob-endpoint
服务的端点。
通常留空。
属性:
- 配置项:endpoint
- 环境变量:RCLONE_AZUREBLOB_ENDPOINT
- 类型:字符串
- 是否必需:否
#### --azureblob-upload-cutoff
切换到分块上传的阈值(<= 256 MiB)(已弃用)。
属性:
- 配置项:upload_cutoff
- 环境变量:RCLONE_AZUREBLOB_UPLOAD_CUTOFF
- 类型:字符串
- 是否必需:否
#### --azureblob-chunk-size
上传块大小。
请注意,此块会存储在内存中,并且内存中可能会同时存储多达 "--transfers" * "--azureblob-upload-concurrency" 个块。
属性:
- 配置项:chunk_size
- 环境变量:RCLONE_AZUREBLOB_CHUNK_SIZE
- 类型:SizeSuffix
- 默认值:4Mi
#### --azureblob-upload-concurrency
多部分上传的并发数。
这是同一文件的多个块同时上传的数量。
如果你通过高速链接上传少量大文件,并且这些上传没有充分利用你的带宽,那么增加此值可能有助于加快传输速度。
在测试中,上传速度几乎与上传并发数成线性增长。例如,要填满千兆位管道,可能需要将此值提高到 64。请注意,这将使用更多内存。
请注意,块会存储在内存中,并且内存中可能会同时存储多达 "--transfers" * "--azureblob-upload-concurrency" 个块。
属性:
- 配置项:upload_concurrency
- 环境变量:RCLONE_AZUREBLOB_UPLOAD_CONCURRENCY
- 类型:整数
- 默认值:16
#### --azureblob-list-chunk
Blob 列表的大小。
这设置了每个列表块中请求的 Blob 数量。默认值是最大值 5000。“列出 Blob”请求允许每兆字节 2 分钟来完成。如果一个操作平均每兆字节花费的时间超过 2 分钟,它将超时([来源](https://docs.microsoft.com/en-us/rest/api/storageservices/setting-timeouts-for-blob-service-operations#exceptions-to-default-timeout-interval))。这可用于限制返回的 Blob 项数量,以避免超时。
属性:
- 配置项:list_chunk
- 环境变量:RCLONE_AZUREBLOB_LIST_CHUNK
- 类型:整数
- 默认值:5000
#### --azureblob-access-tier
Blob 的访问层:热、冷、酷或存档。
存档的 Blob 可以通过将访问层设置为热、冷或酷来恢复。如果你打算使用在账户级别设置的默认访问层,请留空。
如果没有指定“访问层”,rclone 不会应用任何层。rclone 在上传时会对 Blob 执行“设置层”操作,如果对象未修改,将“访问层”指定为新的层将不会有任何效果。如果远程的 Blob 处于“存档层”,尝试从远程执行数据传输操作将不被允许。用户应首先通过将 Blob 分层为“热”、“冷”或“酷”来恢复。
属性:
- 配置项:access_tier
- 环境变量:RCLONE_AZUREBLOB_ACCESS_TIER
- 类型:字符串
- 是否必需:否
#### --azureblob-archive-tier-delete
在覆盖存档层 Blob 之前删除它们。
存档层的 Blob 不能更新。因此,如果没有设置此标志,当你尝试更新存档层的 Blob 时,rclone 将产生错误:
不使用 --azureblob-archive-tier-delete 无法更新存档层的 Blob
设置此标志后,rclone 在尝试覆盖存档层的 Blob 之前,会在上传替换文件之前删除现有 Blob。如果上传失败,这有可能导致数据丢失(与更新普通 Blob 不同),而且由于提前删除存档层的 Blob 可能会产生费用,因此成本可能更高。
属性:
- 配置项:archive_tier_delete
- 环境变量:RCLONE_AZUREBLOB_ARCHIVE_TIER_DELETE
- 类型:布尔值
- 默认值:false
#### --azureblob-disable-checksum
不将 MD5 校验和存储在对象元数据中。
通常,rclone 会在上传之前计算输入的 MD5 校验和,以便将其添加到对象的元数据中。这对于数据完整性检查非常有用,但可能会导致大文件上传开始前出现长时间延迟。
属性:
- 配置项:disable_checksum
- 环境变量:RCLONE_AZUREBLOB_DISABLE_CHECKSUM
- 类型:布尔值
- 默认值:false
#### --azureblob-memory-pool-flush-time
内部内存缓冲区池刷新的频率(不再使用)。
属性:
- 配置项:memory_pool_flush_time
- 环境变量:RCLONE_AZUREBLOB_MEMORY_POOL_FLUSH_TIME
- 类型:Duration
- 默认值:1m0s
#### --azureblob-memory-pool-use-mmap
内部内存池是否使用 mmap 缓冲区(不再使用)。
属性:
- 配置项:memory_pool_use_mmap
- 环境变量:RCLONE_AZUREBLOB_MEMORY_POOL_USE_MMAP
- 类型:布尔值
- 默认值:false
#### --azureblob-encoding
后端的编码方式。
有关更多信息,请参阅 [概述中的编码部分](/overview/#encoding)。
属性:
- 配置项:encoding
- 环境变量:RCLONE_AZUREBLOB_ENCODING
- 类型:Encoding
- 默认值:Slash,BackSlash,Del,Ctl,RightPeriod,InvalidUtf8
#### --azureblob-public-access
容器的公共访问级别:blob 或 container。
属性:
- 配置项:public_access
- 环境变量:RCLONE_AZUREBLOB_PUBLIC_ACCESS
- 类型:字符串
- 是否必需:否
- 示例:
- ""
- 只能通过授权请求访问容器及其 Blob。
- 这是默认值。
- "blob"
- 可以通过匿名请求读取此容器内的 Blob 数据。
- "container"
- 允许对容器和 Blob 数据进行完全公共读取访问。
#### --azureblob-directory-markers
创建新目录时,上传一个带有尾随斜杠的空对象
基于存储桶的远程存储不支持空文件夹,此选项会创建一个以 "/" 结尾的空对象来保留文件夹。
此对象还具有元数据 "hdi_isfolder = true" 以符合 Microsoft 标准。
属性:
- 配置项:directory_markers
- 环境变量:RCLONE_AZUREBLOB_DIRECTORY_MARKERS
- 类型:布尔值
- 默认值:false
#### --azureblob-no-check-container
如果设置,则不尝试检查容器是否存在或创建它。
如果你知道容器已经存在,并且希望尽量减少 rclone 执行的事务数量,那么此选项会很有用。
属性:
- 配置项:no_check_container
- 环境变量:RCLONE_AZUREBLOB_NO_CHECK_CONTAINER
- 类型:布尔值
- 默认值:false
#### --azureblob-no-head-object
如果设置,则在获取对象时不进行 GET 前的 HEAD 请求。
属性:
- 配置项:no_head_object
- 环境变量:RCLONE_AZUREBLOB_NO_HEAD_OBJECT
- 类型:布尔值
- 默认值:false
#### --azureblob-delete-snapshots
设置以指定在删除 Blob 时如何处理快照。
属性:
- 配置项:delete_snapshots
- 环境变量:RCLONE_AZUREBLOB_DELETE_SNAPSHOTS
- 类型:字符串
- 是否必需:否
- 选项:
- ""
- 默认情况下,如果 Blob 有快照,删除操作将失败。
- "include"
- 指定 'include' 以删除根 Blob 及其所有快照。
- "only"
- 指定 'only' 以仅删除快照但保留根 Blob。
#### --azureblob-description
远程存储的描述。
属性:
- 配置项:description
- 环境变量:RCLONE_AZUREBLOB_DESCRIPTION
- 类型:字符串
- 是否必需:否
### 自定义上传头部
你可以使用 `--header-upload` 标志来设置自定义上传头部。
- Cache-Control
- Content-Disposition
- Content-Encoding
- Content-Language
- Content-Type
- X-MS-Tags
例如 `--header-upload "Content-Type: text/potato"` 或者 `--header-upload "X-MS-Tags: foo=bar"`
## 限制
只有当源文件有 MD5 哈希值时,分块文件的 MD5 哈希值才会被上传。从本地复制到 Azure 时总是会有这种情况。
Microsoft Azure Blob 存储后端不支持 `rclone about` 命令。不具备此功能的后端无法确定 rclone 挂载的可用空间,也不能在 rclone 联合远程存储中使用 `mfs`(最大可用空间)策略。
请参阅 [不支持 rclone about 的后端列表](https://rclone.cn/overview/#optional-features) 和 [rclone about](https://rclone.cn/commands/rclone_about/)
## Azure 存储模拟器支持
你可以使用存储模拟器(通常是 _azurite_)来运行 rclone。
要实现这一点,只需按照介绍中的说明使用 `rclone config` 设置一个新的远程存储,并在高级设置中将 `use_emulator` 设置为 `true`。你无需提供默认的账户名和账户密钥,但可以在 `account` 和 `key` 选项中进行覆盖。(在 v1.61 之前,它们被硬编码为 _azurite_ 的 `devstoreaccount1`。)
此外,如果你想访问运行在不同机器上的存储模拟器实例,可以在高级设置中覆盖 `endpoint` 参数,将其设置为 `http(s)://<主机>:<端口>/devstoreaccount1`(例如 `http://10.254.2.5:10000/devstoreaccount1`)。