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:secret@minio.mysite.tld: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:secret@myminio.cloudprovider.tld: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:secret@minio.mysite.tld/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:secret@minio.mysite.tld/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命令可能按文档记录的方式工作,但任何此类使用均需自行承担风险。