mc replicate add
在版本 RELEASE.2022-12-24T15-21-38Z 中更改: mc replicate add
替换了 mc admin bucket remote add
命令。
MinIO 会根据给定的文件路径或资源位置(例如 IP 或 DNS 地址)自动创建远程目标。定义远程目标的用户不再需要为远程存储桶确定 ARN。
语法
The mc replicate add
命令为 MinIO 部署上的存储桶创建一个新的 服务器端复制 规则。
远程存储桶**必须**位于与本地部署运行相同 MinIO 版本的 MinIO 部署上。
注意
当 mc mirror
仅同步对象的当前版本时,mc replicate
会同步所有版本、版本信息以及对象的元数据。
创建规则后,MinIO 部署会自动开始将新对象同步到远程 MinIO 部署。您可以选择配置现有对象的同步、删除操作和完全删除的对象。
以下命令为 myminio
MinIO 部署上的 mydata
桶添加新的复制规则
mc replicate add \
--remote-bucket https://user:[email protected]:9001/bucket \
--replicate "delete,delete-marker,existing-objects" \
myminio/mydata
复制规则将版本化删除操作、删除标记和现有对象同步到远程 MinIO 部署。
mc 版本变更: RELEASE.2024-03-03T00-13-08Z
您可以使用已配置的别名到 --remote-bucket
标志。
该命令具有以下语法
mc [GLOBALFLAGS] replicate add \
--remote-bucket string \
[--bandwidth "string"] \
[--disable] \
[--disable-proxy] \
[--healthcheck-seconds integer] \
[--id "string"] \
[--limit-upload "string"] \
[--limit-download "string"] \
[--path "string"] \
[--region "string"] \
[--replicate "string"] \
[--storage-class "string"] \
[--sync] \
[--tags "string"] \
[--priority int] \
ALIAS
方括号
[]
表示可选参数。共享同一行的参数是相互依赖的。
使用管道
|
运算符分隔的参数是互斥的。
将示例复制到文本编辑器中,并在终端/shell 中运行命令之前根据需要进行修改。
参数
- ALIAS
- 必填
MinIO 部署的 别名 以及要创建复制规则的桶或桶前缀的完整路径。例如
mc replicate add --remote-bucket https://user:[email protected]:9001/bucket play/mybucket
- --remote-bucket
- 必填
mc 版本变更: RELEASE.2024-03-03T00-13-08Z
--remote-bucket
支持指定现有的 别名。指定远程位置的凭据、目标部署和桶。值可以是 IP 地址、URL 或 别名/桶。
例如,基于 URL 的目标可能如下所示
https://user:secret@myminio.cloudprovider.tld:9001/bucket
基于别名的目标可能如下所示
--remote-bucket minio-target/my-bucket
- --bandwidth
- 可选
将带宽速率限制在不超过指定的 KiB/s、MiB/s 或 GiB/s 速率。有效单位包括
B
表示字节K
表示千字节G
表示千兆字节T
表示太字节Ki
表示KibibytesGi
表示GibibytesTi
表示Tebibytes
例如,要将带宽速率限制在不超过 1 GiB/s,请使用以下命令:
--limit-upload 1Gi
如果未指定,MinIO 不会限制带宽速率。
- --disable
- 可选
以“禁用”状态创建复制规则。在使用
mc replicate update
启用之前,MinIO 不会开始使用该规则复制对象。在复制禁用期间创建的对象在启用规则后不会立即有资格进行复制。您必须通过将
"existing-objects"
显式包含到指定给mc replicate update --replicate
的复制功能列表中来显式启用现有对象的复制。有关详细信息,请参阅 现有对象的复制。
- --limit-download
- 可选
将下载速率限制在不超过指定的 KiB/s、MiB/s 或 GiB/s 速率。有效单位包括
B
表示字节K
表示千字节G
表示千兆字节T
表示太字节Ki
表示KibibytesGi
表示GibibytesTi
表示Tebibytes
例如,要将下载速率限制在不超过 1 GiB/s,请使用以下命令:
--limit-download 1G
如果未指定,MinIO 使用无限下载速率。
- --limit-upload
- 可选
将上传速率限制在不超过指定的 KiB/s、MiB/s 或 GiB/s 速率。有效单位包括
B
表示字节K
表示千字节G
表示千兆字节T
表示太字节Ki
表示KibibytesGi
表示GibibytesTi
表示Tebibytes
例如,要将上传速率限制在不超过 1 GiB/s,请使用以下命令:
--limit-upload 1G
如果未指定,MinIO 使用无限上传速率。
- --path
- 可选
为远程桶启用路径样式查找支持。
有效值包括
on
- 使用路径查找来查找远程桶off
- 使用资源定位器样式(例如域名或 IP 地址)查找来查找远程桶auto
- 请求 MinIO 识别要使用的正确查找类型来查找远程桶
如果未定义,MinIO 使用
auto
值。
- --replicate
- 可选
指定以下值的逗号分隔列表以启用扩展复制功能。
delete
- 指示 MinIO 将 DELETE 操作 复制到目标桶。delete-marker
- 指示 MinIO 将删除标记复制到目标桶。existing-objects
- 指示 MinIO 复制在启用复制之前或在复制暂停期间创建的对象。metadata-sync
- 指示 MinIO 复制每个对象的元数据。仅适用于活动-活动复制情况。省略此值指示 MinIO 停止将仅元数据更改复制回源。
如果未指定,MinIO 会同步所有选项。
- --storage-class
- 可选
指定要应用于复制对象的 MinIO 存储类。
全局标志
此命令支持任何 全局标志。
示例
配置桶复制
以下 mc replicate add
命令创建了一个复制配置,该配置将所有新对象、现有对象、删除操作和删除标记同步到远程目标
mc replicate add myminio/mybucket \
--remote-bucket https://user:[email protected]/remotebucket \
--replicate "delete,delete-marker,existing-objects"
将
myminio/mybucket
替换为要为其创建复制配置的ALIAS
和完整的存储桶路径。将
--remote-bucket
值替换为远程目标的 URL 或路径。如果使用文件路径格式位置,请使用--path on
选项。--replicate
标志指示 MinIO 将所有删除操作、删除标记和现有对象复制到远程。有关复制行为的更多信息,请参阅 删除操作的复制 和 现有对象的复制。
为历史数据记录配置存储桶复制
以下 mc replicate add
命令创建一个新的存储桶复制配置,该配置将所有新的和现有的对象同步到远程目标
mc replicate add myminio/mybucket \
--remote-bucket https://user:[email protected]/remotebucket \
--replicate "existing-objects"
将
myminio/mybucket
替换为要为其创建复制配置的ALIAS
和完整的存储桶路径。将
--remote-bucket
值替换为远程目标的位置。如果使用文件路径格式位置,请使用--path on
选项。--replicate
标志指示 MinIO 将所有现有对象复制到远程。有关复制行为的更多信息,请参阅 现有对象的复制。
生成的远程副本表示远程对象的历史记录,其中源上的删除操作对远程副本没有影响。
行为
服务器端复制需要 MinIO 源和目标
MinIO 服务器端复制仅在 MinIO 部署之间有效。源和目标部署都必须运行 MinIO。
要配置任意与 S3 兼容的服务之间的复制,请使用 mc mirror
。
在源和目标存储桶上启用版本控制
MinIO 依靠版本控制提供的不可变性保护来同步源和复制目标之间的对象。
使用 mc version enable
命令在开始此过程之前在源和目标存储桶上都启用版本控制
mc version enable ALIAS/PATH
所需的权限
MinIO 强烈建议为支持存储桶复制操作专门创建用户。有关在 MinIO 部署中添加用户和策略的更完整文档,请参阅 mc admin user
和 mc admin policy
。
以下策略提供在部署上配置和启用复制的权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"admin:SetBucketTarget",
"admin:GetBucketTarget"
],
"Effect": "Allow",
"Sid": "EnableRemoteBucketConfiguration"
},
{
"Effect": "Allow",
"Action": [
"s3:GetReplicationConfiguration",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation",
"s3:GetBucketVersioning",
"s3:GetObjectRetention",
"s3:GetObjectLegalHold",
"s3:PutReplicationConfiguration"
],
"Resource": [
"arn:aws:s3:::*"
],
"Sid": "EnableReplicationRuleConfiguration"
}
]
}
"EnableRemoteBucketConfiguration"
语句授予为支持复制创建远程目标的权限。"EnableReplicationRuleConfiguration"
语句授予在存储桶上创建复制规则的权限。arn:aws:s3:::*
资源将复制权限应用于源部署上的任何存储桶。您可以根据需要将用户策略限制为特定存储桶。
使用 mc admin policy create
将此策略添加到充当复制源的每个部署中。使用 mc admin user add
在部署上创建用户,并使用 mc admin policy attach
将策略与此新用户关联。
以下策略提供启用复制数据的同步到部署中的权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetReplicationConfiguration",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation",
"s3:GetBucketVersioning",
"s3:GetBucketObjectLockConfiguration",
"s3:GetEncryptionConfiguration"
],
"Resource": [
"arn:aws:s3:::*"
],
"Sid": "EnableReplicationOnBucket"
},
{
"Effect": "Allow",
"Action": [
"s3:GetReplicationConfiguration",
"s3:ReplicateTags",
"s3:AbortMultipartUpload",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectVersionTagging",
"s3:PutObject",
"s3:PutObjectRetention",
"s3:PutBucketObjectLockConfiguration",
"s3:PutObjectLegalHold",
"s3:DeleteObject",
"s3:ReplicateObject",
"s3:ReplicateDelete"
],
"Resource": [
"arn:aws:s3:::*"
],
"Sid": "EnableReplicatingDataIntoBucket"
}
]
}
"EnableReplicationOnBucket"
语句授予远程目标检索存储桶级配置以支持 MinIO 部署中所有存储桶上的复制操作的权限。要将策略限制为特定存储桶,请将这些存储桶指定为Resource
数组中的一个元素,类似于"arn:aws:s3:::bucketName"
。"EnableReplicatingDataIntoBucket"
语句授予远程目标将数据同步到 MinIO 部署中任何存储桶的权限。要将策略限制为特定存储桶,请将这些存储桶指定为Resource
数组中的一个元素,类似于"arn:aws:s3:::bucketName/*"
。
使用 mc admin policy create
将此策略添加到充当复制目标的每个部署中。使用 mc admin user add
在部署上创建用户,并使用 mc admin policy attach
将策略与此新用户关联。
现有对象的复制
从 mc
RELEASE.2021-06-13T17-48-22Z 和 minio
RELEASE.2021-06-07T21-40-51Z 开始,MinIO 支持自动复制存储桶中的现有对象。MinIO 现有对象复制实现了类似于 AWS 在 S3 存储桶之间复制现有对象 的功能,而无需联系技术支持的额外开销。
要在创建新的复制规则时启用现有对象的复制,请将
"existing-objects"
添加到指定给mc replicate add --replicate
的复制功能列表中。要为现有复制规则启用现有对象的复制,请使用
mc replicate add --replicate
将"existing-objects"
添加到现有复制功能列表中。编辑复制规则时,必须指定所有所需的复制功能。
有关此行为的更完整文档,请参阅 现有对象的复制。
元数据更改的同步
MinIO 支持 双向主动-主动 复制配置,其中 MinIO 同步两个 MinIO 部署上的存储桶之间的新的和修改的对象。从 mc
RELEASE.2021-05-18T03-39-44Z 开始,MinIO 默认情况下将仅元数据更改同步回复制对象的“源”部署。在此更新之前,MinIO 不支持将仅元数据更改同步回复制的对象。
启用元数据同步后,MinIO 会重置对象的复制状态,以指示其具备复制资格。具体来说,当应用程序对具有REPLICA
状态的对象执行仅元数据更新时,MinIO 会将该对象标记为PENDING
,并使其具备复制资格。
要禁用元数据同步,请使用mc replicate update --replicate
命令,并在复制功能列表中省略replica-metadata-sync
。
删除操作的复制
MinIO 支持将删除操作复制到目标存储桶。具体来说,MinIO 可以复制删除标记以及特定版本化对象的删除。
对于对象的删除操作,MinIO 复制也会在目标存储桶上创建删除标记。
对于对象版本的删除操作,MinIO 复制也会删除目标存储桶上的这些版本。
MinIO 不会复制因生命周期管理过期规则而删除的对象。MinIO 仅复制显式客户端驱动的删除操作。
MinIO 要求使用mc replicate add --replicate
标志显式启用删除操作的复制。此过程包括启用删除操作和删除标记复制所需的标志。有关此行为的更完整文档,请参阅删除操作的复制。
加密对象的复制
MinIO 支持复制使用自动服务器端加密 (SSE-S3) 加密的对象。源存储桶和目标存储桶必须都启用了自动 SSE-S3,MinIO 才能复制加密对象。
作为复制过程的一部分,MinIO 会解密源存储桶上的对象并传输未加密的对象。然后,目标 MinIO 部署使用目标存储桶 SSE-S3 配置重新加密该对象。MinIO 强烈建议在源和目标部署上启用 TLS,以确保对象在传输过程中的安全性。
MinIO 不支持复制客户端端加密的对象 (SSE-C)。
S3 兼容性
mc 命令行工具构建为与 AWS S3 API 兼容,并已在 MinIO 和 AWS S3 上进行了测试,以确保预期功能和行为。
MinIO 不对其他与 S3 兼容的服务提供任何保证,因为它们的 S3 API 实现未知,因此不受支持。虽然mc命令可能按文档记录的方式工作,但任何此类使用均需自行承担风险。