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哪里:mc mirror [FLAGS] play/mybucket/ myminio/mybucket
对于文件系统中的文件,请指定文件或目录的完整文件系统路径:
mc mirror [FLAGS] ~/data/ myminio/mybucket
如果指定目录,
mc mirror同步目录中的所有文件。
- TARGET
- 必需
存储桶的完整路径
mc mirror同步 SOURCE 对象。请指定TARGETasALIAS/PATH哪里:ALIAS是alias已配置的 S3 兼容主机,和PATH是存储桶的路径。
mc mirror SOURCE play/mybucket
- --active-active
- 可选
在两个站点之间建立主动-主动镜像活动。 必须在每个站点上重复执行该命令。
例如:
在站点 A 上,从 A 镜像到 B
mc mirror --active-active siteA siteB
在站点 B 上,从 B 镜像到 A
mc mirror --active-active siteB siteA
- --checksum
- 可选
版本 RELEASE.2024-10-02T08-27-28Z 中的新增内容。
为上传的对象添加校验和。
有效值为: -
MD5-CRC32-CRC32C-SHA1-SHA256该功能需要服务器尾部标头,并可与 AWS 或 MinIO 目标配合使用。
- --dry-run
- 可选
执行模拟镜像操作。 使用此操作来测试
mc mirror该操作只会镜像所需的对象或存储桶。
- --enc-kms
使用服务器端加密或解密对象SSE-KMS 加密使用客户端管理的密钥。
该参数接受一个键值对,格式为
KEY=VALUEKEY对象的完整路径为
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=VALUEKEY对象的完整路径为
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-storageclass
- 可选
排除对象
SOURCE具有指定存储类别的对象。 您可以在一个命令中多次使用此标志,以排除多个存储类别中的对象。使用此选项排除需要重新激活或恢复对象的存储类,例如从AWS S3存储桶迁移时,其中某些对象具有
GLACIERorDEEP_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 使用无限制的上传速率。
- --monitoring-address
- 可选
创建一个Prometheus监控镜像活动的端点。 指定要在其上创建抓取端点的本地网络适配器和端口地址。 默认为
localhost:8081).
- --overwrite
- 可选
覆盖对象
TARGET.例如,考虑一个活跃的
mc mirror --overwrite正在将内容从源同步到目标。如果源上的对象发生变化,
mc mirror --overwrite同步并覆盖目标位置上的任何匹配文件。没有
--overwrite如果目标位置已存在某个对象,镜像过程将无法同步该对象。mc mirror记录错误并继续同步其他对象。
- --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存在于两端。 为确保源端和目标端的对象名称完全匹配和内容,使用--overwriteor--watch.Changed in version RELEASE.2023-05-04T18-10-16Z:
mc mirror --remove如果目标路径是不存在的本地文件系统目录,则返回错误。在之前的版本中,指定
/path/to/directory将导致移除/path/to文件夹如果directory不存在。
- --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
持续将本地目录镜像到 S3 兼容主机
使用mc mirrorwith--watch持续将文件从文件系统镜像到S3兼容主机,当文件系统中添加或删除对象时,主机端也会相应添加或删除:
mc mirror --watch FILEPATH ALIAS/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.jpgphotos/2021/february/myotherphoto.jpgphotos/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命令可能按文档所述工作,任何此类使用风险自负。