中文文档

mc replicate add

在 RELEASE.2022-12-24T15-21-38Z 版本发生变更: mc replicate add 命令取代了 mc admin bucket remote add 命令。

MinIO 会根据给定的文件路径或资源位置(如 IP 或 DNS 地址)自动创建远程目标。 用户在定义远程目标时不再需要确定远程桶的 ARN(Amazon Resource Name)。

语法

mc replicate add 命令在 MinIO 部署上的一个桶上创建一个 新的 服务器端复制 规则。

远程桶 必须 位于与本地部署运行相同版本的 MinIO 部署上。

备注

mc mirror 命令仅同步对象的当前版本,而 mc replicate 命令则同步对象的所有版本、版本信息以及元数据。

在创建规则后,MinIO 部署会自动开始将新对象同步到远程 MinIO 部署。 您可以选择性地配置现有对象的同步、删除操作以及完全删除的对象。

以下命令为 mydata 桶在 myminio MinIO部署上添加了一个新的复制规则:

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

您可以将已配置的ALIAS用于 --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
  • 方括号 [] 表示可选参数。

  • 参数在同一行表示它们是相互依赖的。

  • 使用管道 | 运算符分隔的参数是相互排斥的。

在终端/壳中运行命令之前,将示例复制到文本编辑器中并按需进行修改。

参数

ALIAS
Required

MinIO部署的 alias 以及创建复制规则的目标桶或桶前缀的完整路径。 例如:

mc replicate add --remote-bucket https://user:secret@myminio.cloudprovider.tld:9001/bucket play/mybucket
--remote-bucket
Required

在 mc 版本发生变更: RELEASE.2024-03-03T00-13-08Z

--remote bucket 支持指定现有的 alias

指定远程位置的凭据、目标部署和桶。 值可以是IP地址、URL,或者 alias /存储桶。

例如,基于URL的目标可能如下所示:

https://user:secret@myminio.cloudprovider.tld:9001/bucket

基于别名的目标可能如下所示:

--remote-bucket minio-target/my-bucket
--bandwidth
Optional

将带宽限制设置为不超过指定的速率,单位可以是 KiB/s(千字节每秒)、MiB/s(兆字节每秒)或 GiB/s(吉字节每秒)。 有效单位包括:

  • B for bytes

  • K for kilobytes

  • G for gigabytes

  • T for terabytes

  • Ki for kibibytes

  • Gi for gibibytes

  • Ti for tebibytes

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

--limit-upload 1Gi

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

--disable
Optional

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

在复制禁用期间创建的对象,在启用规则后并不会立即符合复制条件。 你必须显式启用现有对象的复制,通过将 existing-objects 包含在传递给 mc replicate update --replicate 的复制特性列表中。 更多信息,请参见 现有对象的复制

--disable-proxy
Optional

在定义桶之间的活跃-活跃复制时,不要使用代理。

默认情况下,MinIO 启用代理。

--healthcheck-seconds
Optional

远程桶健康状态检查之间的时间长度,以秒为单位。

如果未指定,MinIO 默认使用 60 秒的时间间隔进行健康检查。

--id
Optional

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

--limit-download
Optional

将下载速率限制在不超过指定的速率,单位可以是 KiB/s(千字节每秒)、MiB/s(兆字节每秒)或 GiB/s(吉字节每秒)。 有效单位包括:

  • B for bytes

  • K for kilobytes

  • G for gigabytes

  • T for terabytes

  • Ki for kibibytes

  • Gi for gibibytes

  • Ti for tebibytes

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

--limit-download 1G

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

--limit-upload
:optional:

将上传速率限制在不超过指定的速率,单位可以是 KiB/s(千字节每秒)、MiB/s(兆字节每秒)或 GiB/s(吉字节每秒)。 有效单位包括:

  • B for bytes

  • K for kilobytes

  • G for gigabytes

  • T for terabytes

  • Ki for kibibytes

  • Gi for gibibytes

  • Ti for tebibytes

例如,要将上传速率限制为不超过1 GiB/s,可以使用以下方法:

--limit-upload 1G

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

--path
Optional

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

有效值包括:

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

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

  • auto - 请MinIO确定使用哪种查找方式来找到远程桶。

当未定义时,MinIO 使用默认值 auto

--priority
Optional

指定复制规则的整数优先级。 该值 必须 在源桶上的所有其他规则中是唯一的。 较高值意味着 高于 所有其他规则的优先级。

The default value is 0

--region
Optional

复制的目标桶所在的区域。

--replicate
Optional

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

  • delete - 指示MinIO将:ref:DELETE operations <minio-object-delete> 复制到目标桶。

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

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

  • metadata-sync - 指示MinIO复制每个对象的元数据。 仅供活动-活动复制场景使用。

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

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

--storage-class
Optional

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

--sync
Optional

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

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

--tags
Optional

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

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

MinIO 将复制规则应用于任何具有指定复制标签的 标签集的对象。

全局标记

此命令支持任何 全局标志

示例

配置存储桶复制

以下 mcreplicate add 命令创建一个复制配置,将所有新对象、现有对象、删除操作和删除标记同步到远程目标:

mc replicate add myminio/mybucket \
   --remote-bucket https://user:secret@minio.mysite.tld/remotebucket \
   --replicate "delete,delete-marker,existing-objects"
  • my minio/bucket 替换为 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"
  • my minio/bucket 替换为 ALIAS 和要为其创建复制配置的完整存储桶路径。

  • --remote-bucket 值替换为远程目标的位置。 如果使用文件路径格式的位置,请使用 --path on 选项。

  • --replicate 标志指示 MinIO 将所有现有对象复制到远程。 有关复制行为的更多信息,请参见 现有对象的复制

结果中的远程副本代表了远程上对象的历史记录,其中源上的删除操作对远程副本没有影响。

行为

服务器端复制需要 MinIO 源和目标

MinIO 服务器端复制仅在 MinIO 部署之间工作。 源部署和目标部署都 必须 运行 MinIO。

要在任意S3兼容服务之间配置复制,请使用 mc mirror 命令。

在源存储桶和目标存储桶上启用版本控制

MinIO 依赖于版本控制提供的不可变性保护来在源和复制目标之间同步对象。

在开始此过程之前,请使用mc命令的 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 桶之间复制现有对象 的功能,而无需接触技术支持。

  • 要在创建新复制规则时启用现有对象的复制,请在传递给 mc replicate add --replicate 命令的复制特性列表中包含 existing-objects

  • 要为现有的复制规则启用现有对象的复制,请使用 mc replicate add --replicate 命令将 existing-objects 添加到现有复制特性的列表中。 在编辑复制规则时,您必须指定 所有 期望的复制特性。

有关此行为的更完整文档,请参阅 现有对象的复制

同步元数据更改

MinIO支持 two-way active-active 配置,在这种配置中,MinIO会在两个MinIO部署之间的桶之间同步新创建和修改的对象。 从MinIO版本 mc :minio-git:`RELEASE.2021-05-18T03-39-44Z <mc/releases/tag/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)加密的对象。 为了使MinIO能够复制一个加密的对象,源存储桶和目标存储桶 必须 都启用了自动SSE-S3加密。

作为复制过程的一部分,MinIO在源存储桶上 解密 对象,并传输未加密的对象。 然后,目标MinIO部署使用目标存储桶的SSE-S3配置对对象进行*重新加密*。 MinIO 强烈建议 在源部署和目标部署上都 enabling TLS ,以确保在传输过程中对象的安全。

MinIO 不支持 复制客户端加密的对象(SSE-C)。

S3兼容性

mc 命令行工具是为了与 AWS S3 API 兼容而构建的,并且已经过测试, 以确保在与 MinIO 和 AWS S3 配合使用时,功能和行为符合预期。

MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现是 未知的,因此不受支持。尽管 mc 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。

Join Slack 商业支持购买咨询