文档

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 表示Kibibytes

  • Gi 表示Gibibytes

  • Ti 表示Tebibytes

例如,要将带宽速率限制在不超过 1 GiB/s,请使用以下命令:

--limit-upload 1Gi

如果未指定,MinIO 不会限制带宽速率。

--disable
可选

以“禁用”状态创建复制规则。在使用 mc replicate update 启用之前,MinIO 不会开始使用该规则复制对象。

在复制禁用期间创建的对象在启用规则后不会立即有资格进行复制。您必须通过将 "existing-objects" 显式包含到指定给 mc replicate update --replicate 的复制功能列表中来显式启用现有对象的复制。有关详细信息,请参阅 现有对象的复制

--disable-proxy
可选

在桶之间定义活动-活动复制时,不要代理。

默认情况下,MinIO 会代理。

--healthcheck-seconds
可选

远程桶健康检查之间的时间间隔(以秒为单位)。

如果未指定,MinIO 使用 60 秒的间隔。

--id
可选

为复制规则指定一个唯一的 ID。如果未指定,MinIO 会自动生成一个 ID。

--limit-download
可选

将下载速率限制在不超过指定的 KiB/s、MiB/s 或 GiB/s 速率。有效单位包括

  • B 表示字节

  • K 表示千字节

  • G 表示千兆字节

  • T 表示太字节

  • Ki 表示Kibibytes

  • Gi 表示Gibibytes

  • Ti 表示Tebibytes

例如,要将下载速率限制在不超过 1 GiB/s,请使用以下命令:

--limit-download 1G

如果未指定,MinIO 使用无限下载速率。

--limit-upload
可选

将上传速率限制在不超过指定的 KiB/s、MiB/s 或 GiB/s 速率。有效单位包括

  • B 表示字节

  • K 表示千字节

  • G 表示千兆字节

  • T 表示太字节

  • Ki 表示Kibibytes

  • Gi 表示Gibibytes

  • Ti 表示Tebibytes

例如,要将上传速率限制在不超过 1 GiB/s,请使用以下命令:

--limit-upload 1G

如果未指定,MinIO 使用无限上传速率。

--path
可选

为远程桶启用路径样式查找支持。

有效值包括

  • on - 使用路径查找来查找远程桶

  • off - 使用资源定位器样式(例如域名或 IP 地址)查找来查找远程桶

  • auto - 请求 MinIO 识别要使用的正确查找类型来查找远程桶

如果未定义,MinIO 使用 auto 值。

--priority
可选

指定复制规则的整数优先级。该值在源桶上的所有其他规则中必须是唯一的。较高的值表示比所有其他规则更高的优先级。

默认值为 0

--region
可选

要将内容复制到的目标桶的区域。

--replicate
可选

指定以下值的逗号分隔列表以启用扩展复制功能。

  • delete - 指示 MinIO 将 DELETE 操作 复制到目标桶。

  • delete-marker - 指示 MinIO 将删除标记复制到目标桶。

  • existing-objects - 指示 MinIO 复制在启用复制之前或在复制暂停期间创建的对象。

  • metadata-sync - 指示 MinIO 复制每个对象的元数据。仅适用于活动-活动复制情况。

    省略此值指示 MinIO 停止将仅元数据更改复制回源。

如果未指定,MinIO 会同步所有选项。

--storage-class
可选

指定要应用于复制对象的 MinIO 存储类

--sync
可选

为此远程目标启用同步复制。

默认情况下,MinIO 使用异步复制。

--tags
可选

指定一个或多个用 & 符号 & 分隔的键值对标签,MinIO 使用这些标签过滤要复制的对象。例如

mc replicate add --tags "TAG1=VALUE&TAG2=VALUE&TAG3=VALUE" ALIAS

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
  • ALIAS 替换为 MinIO 部署的 alias

  • PATH 替换为要在其上启用版本控制的存储桶。

所需的权限

MinIO 强烈建议为支持存储桶复制操作专门创建用户。有关在 MinIO 部署中添加用户和策略的更完整文档,请参阅 mc admin usermc 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-22Zminio 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命令可能按文档记录的方式工作,但任何此类使用均需自行承担风险。