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

MinIO Documentation

mc mv

语法

Themc mvcommand moves an object from source to the target, such as between MinIO deployments 命令将对象从源移动到目标,例如 在 MinIO 部署之间or同一 MinIO 部署中的存储桶之间。mc mv还支持在本地文件系统和MinIO之间移动对象。

你也可以使用mc mv针对本地文件系统进行操作以产生 类似于mv命令行工具。

以下命令将对象从mydata桶到archive桶上的myminioMinIO 部署:

mc mv --recursive myminio/mydata myminio/archive

该命令具有以下语法:

mc [GLOBALFLAGS] mv         \
[--attr "string"]           \
[--disable-multipart]       \
[--enc-kms "string"]        \
[--enc-s3 "string"]         \
[--enc-c "string"]          \
[--limit-download string]   \
[--limit-upload string]     \
[--newer-than "string"]     \
[--older-than "string"]     \
[--preserve]                \
[--recursive]               \
[--storage-class "string"]  \
SOURCE [SOURCE...]          \
TARGET
  • Brackets[]表示可选参数。

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

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

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

参数

SOURCE
:required:

要移动的对象。

要从 MinIO 存储桶中移动对象,请指定别名以及对象的完整路径(例如存储桶和对象路径)。例如:

mc mv play/mybucket/object.txt play/myotherbucket/object.txt

要将对象从本地文件系统移动,请指定该对象的完整路径。例如:

mc mv ~/mydata/object.txt play/mybucket/object.txt

指定多个SOURCE将多个对象移动到指定位置的路径TARGET. mc rm对待最后指定的别名或文件系统路径作为TARGET例如:

mc mv ~/mydata/object.txt play/mydata/otherobject.txt myminio/mydata

如果您指定一个目录或存储桶SOURCE,您还必须指定--recursive要递归移动 该目录的内容。如果您省略--recursive参数,mv仅移动指定目录或存储桶顶层中的对象。

TARGET
必需

命令将指定对象移动到的存储桶的完整路径SOURCE. 指定别名已配置的 S3 服务的前缀TARGETpath.

对于从 MinIO 移动对象, 请指定别名以及对象的完整路径 (例如:存储桶和对象路径)。例如:

mc mv play/mybucket/object.txt play/myotherbucket/object.txt

要将对象从本地文件系统移动,请指定该对象的完整路径。例如:

mc mv ~/mydata/object.txt play/mybucket/object.txt

TheTARGET对象名称可以与SOURCE将对象"重命名"作为移动操作的一部分。

如果正在运行mc mv随着--recursive选项,mc mv对待TARGET作为所有对象的存储桶前缀SOURCE.

--attr
可选

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

--disable-multipart
可选

禁用多部分上传功能。

Multipart upload breaks an object into a set of separate parts. Each part uploads individually and in any order. If any individual part upload fails, MinIO retries that part without affecting the other parts. After upload completes, the parts combine to restore the original object.

MinIO recommends using multipart upload for any object larger than 100 MB. For more information on multipart upload, refer to theMinIO建议对任何大于100MB的对象使用分段上传。 有关分段上传的更多信息,请参阅Amazon S3 documentation

--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改为使用参数。

--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 使用无限制的上传速率。

--newer-than
可选

删除比指定天数更新的对象。指定一个字符串在##d#hh#mm#ss格式。例如:--newer-than 1d2hh3mm4ss.

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

--older-than
可选

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

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

--preserve, a
可选

保留文件系统属性和存储桶策略规则SOURCE目录、存储桶和对象TARGET存储桶。

--recursive, r
可选

递归移动每个存储桶或目录的内容SOURCETARGETbucket.

--storage-class
可选

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

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

全局标志

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

示例

将文件从文件系统移动到S3兼容主机

mc mv [--recursive] FILEPATH ALIAS/PATH
  • 替换FILEPATH包含要移动文件的完整文件路径。

    如果指定目录路径,请包含--recursiveflag.

    mc mv 移除成功移动到目标位置后,从源位置删除文件。

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

  • 替换PATH与目标存储桶。

将文件从文件系统移动到具有自定义元数据的S3兼容主机

使用mc mv随着--attr设置文件自定义属性的选项。

mc mv --attr "ATTRIBUTES" FILEPATH ALIAS/PATH
  • 替换FILEPATH包含要移动文件的完整文件路径。mc mv 移除成功将文件移动到目标位置后,从源位置删除该文件。

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

  • 替换PATH与目标存储桶。

  • 替换ATTRIBUTES带有一个或多个逗号分隔的键值对KEY=VALUE每一对代表一个属性键和值。

在 S3 兼容服务之间移动存储桶

 mc mv --recursive SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • 替换SRCALIAS随着alias已配置的 S3 兼容主机。

  • 替换SRCPATH使用存储桶的路径。mc mv 移除在成功将其移动到目标位置后,从源位置删除存储桶及其内容。

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

  • 替换TGTPATH使用存储桶的路径。

将文件移动到具有特定存储类别的S3兼容主机

使用mc mv随着--storage-class设置目标 S3 兼容主机上存储类的选项。

mc mv --storage-class CLASS FILEPATH ALIAS/PATH
  • 替换CLASS与存储类关联到文件。

  • 替换FILEPATH包含要移动文件的完整文件路径。mc mv 移除成功将文件移动到目标位置后,从源位置删除该文件。

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

  • 替换PATH与目标存储桶。

  • 替换ATTRIBUTES带有一个或多个逗号分隔的键值对KEY=VALUE每一对代表一个属性键和值。

    mc mv –storage-class REDUCED_REDUNDANCY myobject.txt play/mybucket

行为

移动时的对象名称

MinIO 使用SOURCE移动对象时的对象名称TARGET如果没有指定明确的目标对象名称。

您可以为该对象指定一个不同的名称TARGET使用相同的对象路径来"重命名" 一个对象。例如:

mc mv play/mybucket/object.txt play/mybucket/myobject.txt

对于递归移动操作(mc mv --recursive), MinIO 将其视为TARGETpath 作为对象的前缀SOURCE.

校验和验证

mc mv验证所有使用MD5SUM校验和的对象存储移动操作。

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

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

S3 Compatibility

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

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