中文文档

mc cp

语法

mc cp 命令用于将对象从一个MinIO部署复制到另一个MinIO 部署, 或者 从MinIO复制到本地文件系统。

你还可以使用 mc cp 命令针对本地文件系统, 以产生类似于 cp 命令行工具的结果。

备注

mc cp 命令仅复制对象的最后一个版本或指定的版本,而不复制任何版本信息或修改日期。 要复制所有版本、版本信息和相关元数据,请使用 mc replicate add 或 mc admin replicate 命令。

以下命令将本地文件系统目录中的文件复制到 myminio MinIO部署的 mydata 桶中:

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

mc 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
  • 方括号 [] 表示可选参数。

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

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

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

参数

SOURCE
Required

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

要从MinIO复制对象,请指定 alias 和该对象的完整路径(例如,桶和对象路径)。 例如:

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
Required

mc cp 复制对象的完整路径。

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

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

如果您想从本地文件系统复制一个对象, 您需要指定该对象的完整路径。 例如:

mc cp play/mybucket/object.txt ~/mydata/object.txt
--attr
Optional

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

--checksum
Optional

在 RELEASE.2024-10-02T08-27-28Z 版本加入.

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

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

该标志需要服务器尾随标头并与 AWS 或 MinIO 目标配合使用。

--disable-multipart
Optional

禁用复制会话的分段上传。

--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
Optional

使用服务器端 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
Optional

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

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

KEY

对象的完整路径,即 alias/bucket/path/object.ext 。

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

VALUE

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

原始 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"

备注

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

Optional

该命令启用了对复制对象的无限期 合法保留 对象锁定。

指定 on 。

--limit-download
Optional

将客户端的下载速率限制在指定的KiB/s、MiB/s或GiB/s之内。 只影响运行MinIO客户端的本地设备的下载。 有效的单位包括:

  • B for bytes

  • K for kilobytes

  • M for megabytes

  • G for gigabytes

  • T for terabytes

  • Ki for kibibytes

  • Mi for mibibytes

  • Gi for gibibytes

  • Ti for tebibytes

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

--limit-download 1G

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

--limit-upload
:optional:

将客户端的上传速率限制在规定的KiB/s、MiB/s或GiB/s以下。 这只影响运行MinIO Client的本地设备的上传。 有效的单位包括:

  • B for bytes

  • K for kilobytes

  • M for megabytes

  • G for gigabytes

  • T for terabytes

  • Ki for kibibytes

  • Mi for mibibytes

  • Gi for gibibytes

  • Ti for tebibytes

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

--limit-upload 1G

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

--md5
Optional

在 RELEASE.2024-10-02T08-27-28Z 版本发生变更: 由 :mc-command:`~mc cp --checksum` 标志替换。

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

--newer-than
Optional

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

默认为 0 (所有对象)。

--older-than
Optional

复制指定时间限制之前的对象。 以 #d#hh#mm#ss 格式指定字符串。 例如: --older-than 1d2hh3mm4ss

默认为 0 (所有对象)。

--preserve, a
Optional

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

--recursive, r
Optional

递归复制每个桶或目录 SOURCE 的内容到 TARGET 桶。

--retention-duration
Optional

应用于复制对象(如果有的话)的 WORM 保留模式 的持续时间。

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

需要指定 --retention-mode 。

--retention-mode
Optional

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

  • GOVERNANCE

  • COMPLIANCE

需要指定 --retention-duration.

--rewind
Optional

指令 mc cp 只对在指定时间点存在的 对象版本进行操作。

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

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

--rewind 命令要求指定的 SOURCE 是一个支持 桶版本控制 的 S3 兼容服务。 对于 MinIO 部署,使用 mc version 命令来启用或禁用桶版本控制。

--storage-class, sc
Optional

在 TARGET 上为新对象设置存储类别。

更多信息关于S3存储类别, 请参见 https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html 。

--tags
Optional

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

指定由与号分隔的键值对列表,例如 KEY1=VALUE1&KEY2=VALUE2 ,每个对代表 一个要分配给对象的标签。

--version-id, vid
Optional

指令 mc cp 只对指定的对象版本进行操作。

需要指定的 SOURCE 是一个支持 桶版本控制 的 S3 兼容服务。 对于 MinIO 部署,使用 mc version 命令来启用或禁用桶版本控制。

--zip
Optional

在复制过程中,从 .zip 归档中提取文件。 仅在源归档文件存在于MinIO部署上时才有效。

全局标记

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

示例

将对象复制到 S3

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

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

  • 将 ALIAS 替换为配置好 的S3兼容主机的 alias 。

  • 将 PATH 替换为在S3兼容主机上 对象的路径。您可以指定一个不同的对象名称来在 复制时 rename 对象。

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

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

  • 将 TGTALIAS 替换为目标 S3兼容主机的 alias 。

  • 将 TGTPATH 替换为在 目标S3兼容主机上对象的路径。如果省略对象名称, 将使用 SRCPATH 中的对象名称。

递归地将对象复制到 S3

使用 mc cp --recursive 命令来递归地将对象 复制到S3兼容主机上。

mc cp --recursive SOURCE ALIAS/PATH
  • 将 SOURCE 替换为包含文件 的文件系统路径。

  • 将 ALIAS 替换为配置好 的S3兼容主机的 alias 。

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

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

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

  • 将 TGTALIAS 替换为目标 S3兼容主机的 alias 。

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

复制对象的时间点版本

使用 mc cp --rewind 命令来复制对象在 特定时间点的版本。这个命令只适用于S3到S3的复制。

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

  • 将 SRCALIAS 替换为 源S3兼容主机的 alias 。

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

  • 将 TGTALIAS 替换为 目标S3兼容主机的 alias 。

  • 将 TGTPATH 替换为目标S3兼容 主机上对象的路径。如果省略对象名称, 将使用 SRCPATH 中的对象名称。

Requires Versioning

mc cp 需要使用 桶版本控制 来使用此功能。 使用 mc version 命令来为一个桶启用版本控制。

复制对象的特定版本

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

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

  • 将 SRCALIAS 替换为 源S3兼容主机的 alias 。

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

  • 将 TGTALIAS 替换为 目标S3兼容主机的 alias 。

  • 将 TGTPATH 替换为目标S3兼容 主机上对象的路径。如果省略对象名称, 将使用 SRCPATH 中的对象名称。

Requires Versioning

mc cp 需要使用 桶版本控制 来使用此功能。 使用 mc version 命令来为一个桶启用版本控制。

添加一个 content-type 值。

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

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

  • 将 SRCALIAS 替换为源S3兼容主机的 alias 。

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

  • 将 TGTALIAS 替换为目标S3兼容主机的 alias 。

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

以下示例设置 application/json 的 content-type :

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

行为

mc cp 在执行到对象存储的复制操作时, 会使用 MD5SUM 校验和来验证数据完整性。

S3兼容性

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

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

Join Slack 商业支持购买咨询