文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

mc mirror

语法

Themc mirror命令将内容同步到 MinIO 部署,类似于rsync实用工具。mc mirror支持文件系统、MinIO 部署和其他 S3 兼容主机作为同步源。

Note

mc mirror仅同步当前对象,不包含任何版本信息或元数据。 要同步对象的版本历史和元数据,请考虑使用mc replicatefor存储桶复制 or mc admin replicatefor站点复制.

以下命令将本地文件系统目录中的内容同步到mydata桶上的myminioMinIO 部署。

mc mirror --watch ~/mydata myminio/mydata

该命令会“监视”本地文件系统中添加或删除的文件,并将这些操作同步到 MinIO,直到被明确终止。

mc mirror --watch更新本地文件系统中更改的文件到 MinIO(参见--overwrite). --watch不会从 MinIO 中删除本地文件系统中不存在的其他文件(参见--remove).

该命令具有以下语法:

mc [GLOBALFLAGS] mirror                            \
                 [--active-active]                 \
                 [--attr "string"]                 \
                 [--checksum "value"]              \
                 [--disable-multipart]             \
                 [--dry-run]                       \
                 [--enc-kms "string"]              \
                 [--enc-s3 "string"]               \
                 [--enc-c "string"]                \
                 [--exclude "string"]              \
                 [--exclude-bucket "string"]       \
                 [--exclude-storageclass "string"] \
                 [--limit-download string]         \
                 [--limit-upload string]           \
                 [--md5]                           \
                 [--monitoring-address "string"]   \
                 [--newer-than "string"]           \
                 [--older-than "string"]           \
                 [--overwrite]                     \
                 [--preserve]                      \
                 [--region "string"]               \
                 [--remove]                        \
                 [--retry]                         \
                 [--skip-errors]                   \
                 [--storage-class "string"]        \
                 [--summary]                       \
                 [--watch]                         \
                 SOURCE                            \
                 TARGET
  • Brackets[]表示可选参数。

  • 共享同一行的参数是相互依赖的。

  • 使用竖线分隔的参数|操作符是互斥的。

将示例复制到文本编辑器中,根据需要修改,然后在终端/Shell中运行命令。

参数

SOURCE
必需

要同步到目标位置的文件或对象TARGETS3 主机。

对于 S3 兼容主机上的对象,请将对象路径指定为ALIAS/PATH哪里:

  • ALIASalias已配置的 S3 兼容主机,

  • PATH是存储桶或对象的路径。如果指定存储桶,mc mirror同步存储桶中的所有对象。

mc mirror [FLAGS] play/mybucket/ myminio/mybucket

对于文件系统中的文件,请指定文件或目录的完整文件系统路径:

mc mirror [FLAGS] ~/data/ myminio/mybucket

如果指定目录,mc mirror同步目录中的所有文件。

TARGET
必需

存储桶的完整路径mc mirror同步 SOURCE 对象。请指定TARGET as ALIAS/PATH哪里:

  • ALIASalias已配置的 S3 兼容主机,

  • PATH是存储桶的路径。

mc mirror SOURCE play/mybucket

mc mirror使用对象或文件名从SOURCE当同步到TARGETbucket.

--active-active
可选

在两个站点之间建立主动-主动镜像活动。 必须在每个站点上重复执行该命令。

例如:

在站点 A 上,从 A 镜像到 B

mc mirror --active-active siteA siteB

在站点 B 上,从 B 镜像到 A

mc mirror --active-active siteB siteA
--attr
可选

为镜像对象添加自定义元数据。指定键值对作为KEY=VALUE\;例如,--attr key1=value1\;key2=value2\;key3=value3.

--checksum
可选

版本 RELEASE.2024-10-02T08-27-28Z 中的新增内容。

为上传的对象添加校验和。

有效值为: -MD5 - CRC32 - CRC32C - SHA1 - SHA256

该功能需要服务器尾部标头,并可与 AWS 或 MinIO 目标配合使用。

--disable-multipart
可选

禁用同步会话的多部分上传功能。

--dry-run
可选

执行模拟镜像操作。 使用此操作来测试mc mirror该操作只会镜像所需的对象或存储桶。

--enc-kms

使用服务器端加密或解密对象SSE-KMS 加密使用客户端管理的密钥。

该参数接受一个键值对,格式为KEY=VALUE

KEY

对象的完整路径为alias/bucket/path/object.ext.

您只能指定顶级路径,以便对该路径中的所有操作使用单一加密密钥。

VALUE

指定外部 KMS 上的现有数据密钥。

查看mc admin kms key create创建数据密钥的参考。

例如:

--enc-kms "myminio/mybucket/prefix/object.obj=mybucketencryptionkey"

您可以通过重复该参数来指定多个加密密钥。

指定前缀路径,对该路径下所有匹配的对象应用加密:

--enc-kms "myminio/mybucket/prefix/=mybucketencryptionkey"
--enc-s3
可选

使用服务器端加密或解密对象SSE-S3 加密使用 KMS 托管密钥。 指定对象的完整路径为alias/bucket/prefix/object.

例如:

--enc-s3 "myminio/mybucket/prefix/object.obj"

您可以多次指定该参数来表示要加密的不同对象:

--enc-s3 "myminio/mybucket/foo/fooobject.obj" --enc-s3 "myminio/mybucket/bar/barobject.obj"

指定前缀路径,对该路径下所有匹配的对象应用加密:

--enc-s3 "myminio/mybucket/foo"
--enc-c
可选

使用服务器端加密或解密对象SSE-C 加密使用客户端管理的密钥。

该参数接受一个键值对,格式为KEY=VALUE

KEY

对象的完整路径为alias/bucket/path/object.ext.

您只能指定顶级路径,以便对该路径中的所有操作使用单一加密密钥。

VALUE

指定一个32字节的RawBase64编码密钥or一个64字节的十六进制编码密钥,用于SSE-C加密。

原始 Base64 编码拒绝 =- 填充的密钥。 省略填充或使用支持 RAW 格式的 Base64 编码器。

  • KEY- 对象的完整路径为alias/bucket/path/object.

  • VALUE- 用于加密对象的32字节RAW Base64编码数据密钥。

例如:

# RawBase64-Encoded string "mybucket32byteencryptionkeyssec"
--enc-c "myminio/mybucket/prefix/object.obj=bXlidWNrZXQzMmJ5dGVlbmNyeXB0aW9ua2V5c3NlYwo"

您可以通过重复该参数来指定多个加密密钥。

指定前缀路径,对该路径下所有匹配的对象应用加密:

--enc-c "myminio/mybucket/prefix/=bXlidWNrZXQzMmJ5dGVlbmNyeXB0aW9ua2V5c3NlYwo"

Note

MinIO 强烈建议在生产工作负载中不要使用 SSE-C 加密。 请通过 SSE-KMS 使用--enc-kms或通过 SSE-S3--enc-s3改为使用参数。

--exclude
可选

排除对象SOURCE与指定对象匹配的路径名称模式.

--exclude-bucket
可选

版本 mc 中的新功能:RELEASE.2024-03-03T00-13-08Z

排除存储桶SOURCE与指定存储桶匹配的路径名称模式.

--exclude-storageclass
可选

排除对象SOURCE具有指定存储类别的对象。 您可以在一个命令中多次使用此标志,以排除多个存储类别中的对象。

使用此选项排除需要重新激活或恢复对象的存储类,例如从AWS S3存储桶迁移时,其中某些对象具有GLACIER or DEEP_ARCHIVE存储类别。

--limit-download
可选

限制客户端下载速率不超过指定的 KiB/s、MiB/s 或 GiB/s 速率。 这仅影响运行 MinIO Client 的本地设备下载。 有效单位包括:

  • B对于字节

  • K对于千字节

  • M对于兆字节

  • G用于千兆字节

  • T对于太字节

  • Ki对于千位字节

  • Mi对于兆二进制字节

  • Gi对于吉比字节

  • Ti对于太字节

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

--limit-download 1G

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

--limit-upload
可选

限制客户端上传速率不超过指定的 KiB/s、MiB/s 或 GiB/s 速率。 这仅影响运行 MinIO Client 的本地设备的上传。 有效单位包括:

  • B对于字节

  • K对于千字节

  • M对于兆字节

  • G用于千兆字节

  • T对于太字节

  • Ki对于千位字节

  • Mi对于兆二进制字节

  • Gi对于吉比字节

  • Ti对于太字节

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

--limit-upload 1G

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

--md5
可选

强制所有上传文件计算MD5校验和。

--monitoring-address
可选

创建一个Prometheus监控镜像活动的端点。 指定要在其上创建抓取端点的本地网络适配器和端口地址。 默认为localhost:8081).

--newer-than
可选

镜像对象的时间晚于指定的天数。 指定一个字符串在#d#hh#mm#ssformat 例如:--newer-than 1d2hh3mm4ss.

--older-than
可选

镜像早于指定时间限制的对象。 指定一个字符串,格式为#d#hh#mm#ss格式。 例如:--older-than 1d2hh3mm4ss.

默认值为0(所有对象)。

--overwrite
可选

覆盖对象TARGET.

例如,考虑一个活跃的mc mirror --overwrite正在将内容从源同步到目标。

如果源上的对象发生变化,mc mirror --overwrite同步并覆盖目标位置上的任何匹配文件。

没有--overwrite如果目标位置已存在某个对象,镜像过程将无法同步该对象。mc mirror记录错误并继续同步其他对象。

--preserve, a
可选

保留文件系统属性和存储桶策略规则SOURCETARGET.

--region
可选

指定string在目标上创建新存储桶时的区域。

默认值为"us-east-1".

--remove
可选

删除目标上不存在于源中的对象。

使用--remove标志,以便在源和目标上拥有相同的对象列表。

例如,对象 A、B 和 C 存在于源端。 对象 C、D 和 E 存在于目标端。

当运行mc mirror --remove对象A和B同步到目标端,对象D和E从目标端移除。 由于对象C在两端均已存在,因此不会有任何内容从源端移动到目标端。

操作完成后,源端和目标端仅存在对象A、B和C。

mc mirror --remove不验证对象 C 在源端和目标端的内容是否相同,仅验证存在名为 C 的对象C存在于两端。 为确保源端和目标端的对象名称完全匹配内容,使用--overwrite or --watch.

Changed in version RELEASE.2023-05-04T18-10-16Z:mc mirror --remove如果目标路径是不存在的本地文件系统目录,则返回错误。

在之前的版本中,指定/path/to/directory将导致移除/path/to文件夹如果directory不存在。

--retry
可选

如果镜像过程中出现错误,请对每个出错的对象进行重试。

--storage-class, sc
可选

为新对象设置存储类别TARGET.

请参阅 Amazon 文档存储类别有关 S3 存储类的更多信息。

--skip-errors
可选

版本 mc 中的新功能:RELEASE.2024-01-28T16-23-14Z

跳过在镜像过程中产生错误的任何对象。

--summary
可选

完成后,输出已同步数据的摘要。

--watch, w
可选

使用--watch将对象从源镜像到目标的标志,其中目标可能还包含源中不存在的其他对象。

  • --watch持续将文件从源位置同步到目标位置,直到明确终止

  • 目标可能包含源中不存在的文件

  • --watch如果源端存在匹配项,则会覆盖目标端上的对象,就像--overwrite旗帜

默认值为0(所有对象)。

例如,被监视的源上存在对象 A 和 B。 被监视的目标上存在对象 A、B 和 C。

客户端将对象D写入源端并删除对象B。

操作完成后,源端存在对象 A 和 D。 目标端存在对象 A、C 和 D。

全局标志

此命令支持任何全局标志.

示例

将本地目录镜像到S3兼容主机

使用mc mirror将文件从文件系统镜像到 S3 主机:

mc mirror FILEPATH ALIAS/PATH
  • 替换FILEPATH使用要镜像的目录的完整文件路径。

  • 替换ALIAS随着alias已配置的 S3 兼容主机。

  • 替换PATH与目标存储桶。

持续将本地目录镜像到 S3 兼容主机

使用mc mirrorwith--watch持续将文件从文件系统镜像到S3兼容主机,当文件系统中添加或删除对象时,主机端也会相应添加或删除:

mc mirror --watch FILEPATH ALIAS/PATH
  • 替换FILEPATH使用要镜像的目录的完整文件路径。

  • 替换ALIAS随着alias已配置的 S3 兼容主机。

  • 替换PATH与目标存储桶。

持续将 S3 存储桶镜像到 S3 兼容主机

使用mc mirrorwith--watch持续将某个S3兼容主机上存储桶中的对象镜像到另一个S3兼容主机,使得在存储桶中添加或删除的对象也会在目标主机上同步添加或删除。

mc mirror --watch SRCALIAS/SRCPATH TGTALIAS/TGTPATH

将对象从 AWS S3 镜像到 MinIO 并跳过 GLACIER 存储类中的对象

使用mc mirrorwith--exclude-storageclass将对象从 AWS S3 镜像到 MinIO,但不镜像 GLACIER 或 DEEP_ARCHIVE 存储类别中的对象。

mc mirror --exclude-storageclass GLACIER  \
   --exclude-storageclass DEEP_ARCHIVE SRCALIAS/SRCPATH TGALIAS/TGPATH

行为

镜像在失败对象上继续

如果目标位置存在同名对象,MinIO 会输出重复对象的错误信息。mc mirror在发生错误后继续将其他对象从源镜像到目标。

MinIO 在删除对象时修剪空前缀

Themc mirror --watch该命令会持续同步源目标和目标目标之间新增和删除的对象。 这包括当对象在源位置被删除时,自动删除目标位置的对应对象。

对于源端更新的对象也要在目标端更新,请使用–overwrite要从目标中移除源中不存在的对象,请使用–remove.

mc mirror --watch依赖于mc用于删除对象的移除 API。作为删除存储桶前缀中最后一个对象的一部分,mc同时还会递归删除前缀的每个空部分,直到存储桶根目录。mc仅对 已创建的前缀应用递归删除隐式地作为对象写入操作的一部分 - 也就是说,此前缀不是通过显式目录创建命令(如mc mb.

例如,考虑一个存储桶photos使用以下对象前缀:

  • photos/2021/january/myphoto.jpg

  • photos/2021/february/myotherphoto.jpg

  • photos/NYE21/NewYears.jpg

photos/NYE21使用显式创建的前缀mc mb所有其他前缀都是隐式地作为写入该前缀处对象的一部分创建。

如果mc命令移除myphoto.jpg, the removal API automatically trims the empty/januaryprefix. 如果后续mc命令移除myotherphoto.jpg移除 API 会自动对/februaryprefix现在空着的/2021prefix. 如果某个mc命令移除NewYears.jpg, the/NYE21前缀保持不变,因为它已经就位明确地已创建。

如果使用mc mirror --watch对于文件系统的操作,mc应用了相同的行为,通过递归修剪空目录路径直到根目录。然而,mcremove API 无法区分显式创建的目录路径和隐式创建的目录路径。如果mc mirror --watch删除文件系统路径中的最后一个对象,mc递归删除该路径下所有空目录,直至根目录,作为删除操作的一部分。

S3 Compatibility

Themc命令行工具专为兼容 AWS S3 API 而构建,并已通过 MinIO 和 AWS S3 测试,确保功能与行为符合预期。

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