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

MinIO Documentation

mc cp

语法

Themc cpcommand 命令将对象复制到 MinIO 部署或从 MinIO 部署复制对象, 其中源可以是 MinIOor本地文件系统。

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

Note

mc cp只复制对象的最新版本或指定版本,不包含任何版本信息或修改日期。 要复制所有版本、版本信息及相关元数据,请使用mc replicate add or mc admin replicate.

以下命令将文件从本地文件系统目录复制到mydata桶上的myminioMinIO 部署:

mc cp --recursive ~/mydata/ myminio/mydata/

Themc cp命令具有以下语法:

mc [GLOBALFLAGS] cp                                                        \
                 [--attr "string"]                                         \
                 [--disable-multipart]                                     \
                 [--enc-kms "string"]                                      \
                 [--enc-s3 "string"]                                       \
                 [--enc-c "string"]                                        \
                 [--legal-hold "on"]                                       \
                 [--limit-download string]                                 \
                 [--limit-upload string]                                   \
                 [--md5]                                                   \
                 [--newer-than "string"]                                   \
                 [--older-than "string"]                                   \
                 [--preserve]                                              \
                 [--recursive]                                             \
                 [--retention-mode "string" --retention-duration "string"] \
                 [--rewind "string"]                                       \
                 [--storage-class "string"]                                \
                 [--tags "string"]                                         \
                 [--version-id "string"]                                   \
                 [--zip]                                                   \
                 SOURCE [SOURCE ...]                                       \
                 TARGET
  • Brackets[]表示可选参数。

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

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

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

参数

SOURCE
必需

要复制的一个或多个对象。

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

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

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

mc cp ~/data/object.txt myminio/mydata/object.txt play/mydata/

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

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

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

TARGET
必需

完整路径指向mc cp复制对象。

要将对象复制到 MinIO, 请指定alias以及该对象的完整路径 (例如存储桶和对象路径)。例如:

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

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

mc cp play/mybucket/object.txt ~/mydata/object.txt
--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
可选

禁用复制会话的多部分上传功能。

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

可选

启用无限法律保留对复制的对象启用对象锁定。

指定on.

--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
可选

Changed in version RELEASE.2024-10-02T08-27-28Z:被替换为--checksumflag.

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

--newer-than
可选

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

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

--older-than
可选

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

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

--preserve, a
可选

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

--recursive, r
可选

递归复制每个存储桶或目录的内容SOURCETARGETbucket.

--retention-duration
可选

The duration of theWORM保留模式应用到复制的对象上。

将持续时间指定为字符串格式#d#hh#mm#ss格式。 例如:--retention-duration "1d2hh3mm4ss".

需要指定--retention-mode.

--retention-mode
可选

启用对象锁定模式在复制的对象上。 支持以下值:

  • GOVERNANCE

  • COMPLIANCE

需要指定--retention-duration.

--rewind
可选

Directsmc cp仅对指定时间点存在的对象版本进行操作。

  • 要回滚到过去的特定日期,请将日期指定为 ISO8601格式的时间戳。例如:--rewind "2020.03.24T10:00".

  • 要倒回一段时间,请将持续时间指定为字符串,格式为#d#hh#mm#ss格式。例如:--rewind "1d2hh3mm4ss".

--rewind要求指定的SOURCE成为兼容 S3 的服务 并支持Bucket Versioning对于 MinIO 部署,请使用mc version启用或禁用存储桶版本控制。

--storage-class, sc
可选

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

https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html有关 S3 存储类的更多信息。

--tags
可选

将一个或多个标签应用到复制的对象上。

指定一个以&符号分隔的键值对列表作为KEY1=VALUE1&KEY2=VALUE2,其中每对代表要分配给对象的一个标签。

--version-id, vid
可选

Directsmc cp仅对指定的对象版本进行操作。

--version-id要求指定的SOURCE成为兼容 S3 的服务 并支持Bucket Versioning对于 MinIO 部署,请使用mc version启用或禁用存储桶版本控制。

--zip
可选

在复制过程中,从压缩文件中提取文件.ziparchive. 仅在源归档文件存在于 MinIO 部署中时生效。

全局标志

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

示例

复制对象到 S3

使用mc cp要将对象复制到 S3 兼容的主机:

mc cp SOURCE ALIAS/PATH
  • 替换SOURCE对象所在的文件系统路径。

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

  • 替换PATH对象在 S3 兼容主机上的路径。您可以指定不同的对象名称来在复制时"重命名"该对象。

mc cp SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • 替换SRCALIAS随着alias源 S3 兼容主机的。

  • 替换SRCPATH对象在 S3 兼容主机上的路径。

  • 替换TGTALIAS随着alias目标 S3 兼容主机的。

  • 替换TGTPATH使用目标 S3 兼容主机上对象的路径。省略对象名称以使用SRCPATH对象名称。

递归复制对象到 S3

使用mc cp --recursive要递归地将对象复制到 S3 兼容的主机:

mc cp --recursive SOURCE ALIAS/PATH
  • 替换SOURCE包含文件所在目录的文件系统路径。

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

  • 替换PATH对象在 S3 兼容主机上的路径。mc cp使用SOURCE在目标主机上创建对象时的文件名。

mc cp --recursive SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • 替换SRCALIAS随着alias源 S3 兼容主机的。

  • 替换SRCPATH源 S3 兼容主机上的存储桶或存储桶前缀路径。

  • 替换TGTALIAS随着alias目标 S3 兼容主机的。

  • 替换TGTPATH对象在目标 S3 兼容主机上的路径。mc cp使用SRCPATH在目标主机上创建对象时的对象名称。

复制对象的指定时间点版本

使用mc cp --rewind将对象复制为它在特定时间点存在的状态。此命令仅适用于 S3 到 S3 的复制。

mc cp --rewind DURATION SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • 替换DURATION在指定的过去时间点,该命令会复制对象。例如,指定30d复制对象在当前日期前30天的版本。

  • 替换SRCALIAS随着alias源 S3 兼容主机的。

  • 替换SRCPATH指向源 S3 兼容主机上对象的路径。

  • 替换TGTALIAS随着alias目标 S3 兼容主机的。

  • 替换TGTPATH使用目标 S3 兼容主机上对象的路径。省略对象名称以使用SRCPATH对象名称。

需要版本控制

mc cp需要bucket versioning要使用此功能。mc version对存储桶启用版本控制。

复制对象的特定版本

使用mc cp --version-id复制对象的特定版本。此命令仅适用于 S3 到 S3 的复制。

mc cp --version-id VERSION SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • 替换VERSION使用要复制的对象版本。

  • 替换SRCALIAS随着alias源 S3 兼容主机的。

  • 替换SRCPATH指向源 S3 兼容主机上对象的路径。

  • 替换TGTALIAS随着alias目标 S3 兼容主机的。

  • 替换TGTPATH使用目标 S3 兼容主机上对象的路径。省略对象名称以使用SRCPATH对象名称。

需要版本控制

mc cp需要bucket versioning要使用此功能。mc version对存储桶启用版本控制。

添加一个content-type

使用mc cp --attr添加一个content-typevalue. 此命令仅适用于 S3 到 S3 的复制。

mc cp --attr="content-type=CONTENT-TYPE" SRCALIAS/SRCPATH TGTALIAS/TGTPATH
  • 替换CONTENT-TYPE具有所需内容类型(也称为媒体类型).

  • 替换SRCALIAS随着alias源 S3 兼容主机的。

  • 替换SRCPATH源 S3 兼容主机上的对象路径。

  • 替换TGTALIAS随着alias目标 S3 兼容主机的。

  • 替换TGTPATH使用目标 S3 兼容主机上对象的路径。 省略对象名称以使用SRCPATH对象名称。

以下示例设置了一个content-type of application/json:

 mc cp data.ndjson --attr="content-type=application/json" myminio/mybucket

行为

mc cp验证所有使用MD5SUM校验和的对象存储复制操作。

S3 Compatibility

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

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